Menu Docs
Página inicial do Docs
/ /
Serviços Atlas App

Arquivos de configuração do ponto de conexão HTTP

Observação

Esta página descreve um formato de arquivo de configuração legado. Você só deve usar essas informações se estiver usando o realm-cli obsoleto.

Todos os arquivos de configuração que você extrai com o App Services CLI ou exporta da UI utilizam a versão de configuração mais recente. Para obter informações detalhadas sobre o formato do arquivo de configuração atual, consulte Configuração do aplicativo.

app/
└── http_endpoints/
├── config.json
├── data_api_config.json
└── [Deprecated] <Service Name>/
├── config.json
├── rules/
│ └── <Rule Name>.json
└── incoming_webhooks/
└── <Webhook Name>/
├── config.json
└── source.js

Defina as configurações de todos os HTTPS endpoints do seu aplicativo como uma array no http_endpoints/config.json.

[
{
"route": "<Endpoint route name>",
"http_method": "<HTTP method>",
"function_name": "<Endpoint function name",
"validation_method": "<Authorization scheme>",
"secret_name": "<Validation Secret Name>",
"respond_result": <boolean>,
"fetch_custom_user_data": <boolean>,
"create_user_on_auth": <boolean>,
"disabled": <boolean>
}
]
Campo
Descrição
route
string
http_method
string

O tipo de método HTTP com o qual o endpoint lida. Especifique * para lidar com todos os métodos com um único endpoint.

Um dos seguintes:

  • "GET"

  • "POST"

  • "PUT"

  • "PATCH"

  • "DELETE"

  • "DELETE"

  • "*"

function_name
string
O nome da função associada ao endpoint. A função deve usar a assinatura da função do endpoint.
validation_method
string

O esquema de autorização do endpoint usado para validar as solicitações recebidas.

Um dos seguintes:

  • "SECRET_AS_QUERY_PARAM"

  • "VERIFY_PAYLOAD"

  • "NO_VALIDATION"

secret_name
string
O nome de um segredo que contém uma string. Se validation_method estiver definido como SECRET_AS_QUERY_PARAM ou VERIFY_PAYLOAD, esse segredo será usado para autorizar solicitações.
respond_result
boolean

Se true, o endpoint retorna uma resposta HTTP personalizável para o cliente. Você configura a resposta chamando os métodos no objeto Response . Se você não configurar a resposta, o endpoint retornará uma resposta 200 - Ok com o valor retornado da função do endpoint como o corpo da solicitação.

Se false, as solicitações retornam uma resposta 204 - No Content sem dados no corpo.

fetch_custom_user_data
boolean

If true, o documento de dados de usuário personalizado do usuário autenticado está disponível via context.user.custom_data.

Se false, os dados personalizados do usuário não são query e context.user.custom_data é um objeto vazio.

create_user_on_auth
boolean

Se true, seu aplicativo criará automaticamente um novo usuário se as credenciais de usuário fornecidas forem autenticadas com sucesso, mas não estiverem associadas a um usuário existente.

Essa configuração é útil para aplicativos que se integram ao sistema de autenticação externo por meio do provedor de autenticação JSON web token Personalizado. Se uma solicitação incluir um JSON web token válido do sistema externo que não corresponde a um usuário registrado, isso criará um novo usuário com o JSON web token como uma identidade.

disabled
boolean
Habilita (false) ou desabilita (true) o endpoint.

Defina a configuração dos endpoints da Data API gerados pelo seu aplicativo em http_endpoints/data_api_config.json.

{
"disabled": <boolean>,
"versions": ["v1"],
"return_type": "EJSON" | "JSON",
"create_user_on_auth": <boolean>,
"run_as_system": <boolean>,
"run_as_user_id": "<User Account ID>",
"run_as_user_id_script_source": "<Function Source Code>"
}
Campo
Descrição
disabled
boolean
Se false, a Data API não está habilitada. Os endpoints gerados não tratam nem respondem a solicitações.
versions
string[]

Uma lista de versões do Data API compatíveis com seu aplicativo. A lista pode incluir um subconjunto de todas as versões possíveis, mas deve listar as versões em ordem crescente. Não é possível habilitar uma versão diferente da versão mais recente, mas todas as versões habilitadas anteriormente listadas aqui continuarão funcionando.

Versões disponíveis:

  • "v1"

return_type
string

O formato de dados a ser usado para dados retornados por endpoints em corpos de resposta HTTPS.

Um dos seguintes:

  • "EJSON"

  • "JSON"

create_user_on_auth
boolean

Se true, seu aplicativo criará automaticamente um novo usuário se as credenciais de usuário fornecidas forem autenticadas com sucesso, mas não estiverem associadas a um usuário existente.

Essa configuração é útil para aplicativos que se integram ao sistema de autenticação externo por meio do provedor de autenticação JSON web token Personalizado. Se uma solicitação incluir um JSON web token válido do sistema externo que não corresponde a um usuário registrado, isso criará um novo usuário com o JSON web token como uma identidade.

run_as_user_id
string

ID da conta de um usuário do aplicativo. Se definidos, os endpoints sempre serão executados da forma como o usuário especificou.

Não é possível usar com run_as_user_id_script_source.

run_as_user_id_script_source
string

Código fonte em string para uma função que retorna o ID da conta de um usuário do aplicativo. Se definidos, os endpoints executam a função em cada solicitação e são executados como o usuário com o ID retornado da função.

Não é possível usar com run_as_user_id.

Os serviços HTTP legados obsoletos são agrupados em serviços nomeados dentro de /http_endpoints.

http_endpoints/<Service Name>/config.json
{
"name": "<Service Name>",
"type": "http",
"config": {}
}
Campo
Descrição
name
String
O nome do serviço de pontos de conexão HTTP. Isso deve ser exclusivo entre todos os serviços de ponto de conexão HTTP no aplicativo e corresponder ao nome do diretório que o contém.
type
String
Para pontos de conexão HTTP, esse valor é sempre "http".
config
String
Opções adicionais de configuração para o serviço. Atualmente, os Pontos de Conexão HTTP não têm opções de configuração adicionais.

Você define as regras de ação do serviço no subdiretório rules/ do serviço. Cada regra é mapeada para seu próprio arquivo de configuração do .json com o mesmo nome da regra.

http_endpoints/<Service Name>/rules/<Rule Name>.json
{
"name": "<Rule Name>",
"actions": ["<Service Action Name>"],
"when": { <JSON Rule Expression> }
}
Campo
Descrição
name
String
O nome da regra de serviço. O nome pode ter no máximo 64 caracteres e só pode conter letras, números, sublinhados e hífens ASCII.
actions
Array<String>
Uma lista de ação HTTP às quais a regra se aplica.
when
Document
Uma expressão de regra que avalia para true quando a regra se aplica a uma determinada solicitação.
http_endpoints/<Service Name>/incoming_webhooks/<Webhook Name>/config.json
{
"name": "<Webhook Name>",
"can_evaluate": { <JSON Expression> },
"run_as_authed_user": <Boolean>,
"run_as_user_id": "<App Services User ID>",
"run_as_user_id_script_source": "<Function Source Code>",
"fetch_custom_user_data": <Boolean>,
"create_user_on_auth": <Boolean>,
"respond_result": <Boolean>,
"options": {
"httpMethod": "<HTTP Method>",
"validationMethod": "<Webhook Validation Method>",
"secret": "<Webhook Secret>"
}
}
Campo
Descrição
name
String
O nome do webhook. Isso deve ser exclusivo entre todos os webhooks no serviço de pontos de conexão HTTP e corresponder ao nome do diretório que o contém.
can_evaluate
JSON Expression (default: true)
Uma expressão JSON que avalia para true se o webhook for permitido ser executado. O Atlas App Services avalia essa expressão para cada solicitação recebida.
disable_arg_logs
Boolean
Se true, o App Services omite os argumentos fornecidos ao webhook a partir da entrada do registro de execução da função.
run_as_authed_user
Boolean

Se true, a função do webhook é executada no contexto de um usuário do aplicativo existente especificado por cada solicitação recebida. As solicitações de entrada devem incluir as credenciais do provedor de autenticação do usuário no corpo da solicitação ou nos cabeçalhos da solicitação.

Dica

Para obter um exemplo de como especificar credenciais, consulte Configurar webhooks de serviço [obsoleto].

run_as_user_id
String
O ID exclusivo de um usuário do App Services com o qual a função sempre é executada. Não é possível usar com run_as_user_id_script_source ou run_as_authed_user.
run_as_user_id_script_source
String
Uma função em string que é executada sempre que o webhook é chamado e retorna o ID exclusivo de um usuário do App Services com o qual a função é executada. Não é possível usar com run_as_user_id ou run_as_authed_user.
respond_result
Boolean
Se true, o App Services inclui o valor de retorno da função do webhook como o corpo da resposta HTTP que envia ao cliente que iniciou a solicitação do webhook.
fetch_custom_user_data
Boolean

Se true, o App Services query os dados de usuário personalizados do usuário solicitante e, se existirem, expõe os dados como um objeto na propriedade context.user.custom_data .

Esta opção só estará disponível se run_as_authed_user estiver definido como true.

create_user_on_auth
Boolean

Se true, o App Services criará automaticamente um novo usuário com base nas credenciais de usuário fornecidas, caso elas não correspondam a um usuário já existente (por exemplo nenhum outro usuário tem o endereço de e-mail especificado). O fornecedor de autenticação que corresponde às credenciais deve ser habilitado no momento da solicitação para criar um novo usuário.

Esta opção só estará disponível se run_as_authed_user estiver definido como true.

options
Document

Um documento que contém opções de configuração para o webhook.

{
"httpMethod": "<HTTP Method>",
"validationMethod": "<Webhook Validation Method>",
"secret": "<Webhook Secret>"
}
Campo
Descrição
httpMethod
String
O tipo de método HTTP que o webhook aceita. As solicitações de webhook recebidas devem usar este método.
validationMethod
String

O nome do método de validação de solicitação que o webhook usa.

Opções válidas:

  • "VERIFY_PAYLOAD"

  • "SECRET_AS_QUERY_PARAM"

  • "NO_VALIDATION"

secret
String

Você define o código-fonte de uma função do webhook em um arquivo source.js dentro do diretório do webhook. Cada arquivo deve exportar a função principal que é executada sempre que uma solicitação chama o webhook.

http_endpoints/<Service Name>/incoming_webhooks/<Webhook Name>/source.js
exports = async function (payload, response) {
// Convert the webhook body from BSON to an EJSON object
const body = EJSON.parse(payload.body.text());
// Execute application logic, such as working with MongoDB
if (body.someField) {
const mdb = context.services.get("mongodb-atlas");
const requests = mdb.db("demo").collection("requests");
const { insertedId } = await requests.insertOne({
someField: body.someField,
});
// Respond with an affirmative result
response.setStatusCode(200);
response.setBody(`Successfully saved "someField" with _id: ${insertedId}.`);
} else {
// Respond with a malformed request error
response.setStatusCode(400);
response.setBody(`Could not find "someField" in the webhook request body.`);
}
// This return value does nothing because we already modified the response object.
// If you do not modify the response object and you enable *Respond with Result*,
// App Services will include this return value as the response body.
return { msg: "finished!" };
};

Próximo

O que são os Serviços de Aplicativo Atlas?