http.post()
Nesta página
- Definição
- Uso
- Exemplo
- Parâmetros
- Valor de retorno
- Modelos de regra
- Os usuários só podem enviar solicitações para um host específico
- As URLs de solicitações devem incluir um parâmetro de consulta específico
- Os corpos de solicitação devem incluir um campo específico
- Os corpos de solicitação devem incluir campos com valores específicos
Definição
Envia um HTTP POST solicitação para a especificada URL usando o Serviço do Atlas App Services HTTP Service.
Uso
Exemplo
Observação
Este exemplo pressupõe que você tenha configurado um HTTP Service chamado "myHttp". Se você não precisar que essa ação HTTP seja validada com Service Rules, poderá usar o módulo Send an HTTP Request (context.http
) .
exports = function() { const http = context.services.get("myHttp"); return http.post({ url: "https://www.example.com/messages", body: { msg: "This is in the body of a POST request!" }, encodeBodyAsJSON: true }) .then(response => { // The response body is encoded as raw BSON.Binary. Parse it to JSON. const ejson_body = EJSON.parse(response.body.text()); return ejson_body; }) };
Parâmetros
A ação http.post()
aceita um argumento do seguinte formulário:
{ "url": <string>, "headers": <document>, "body": <object> or <string>, "encodeBodyAsJSON": <boolean>, "form": <document>, "cookies": <string>, "authUrl": <string>, "followRedirects": <boolean> }
Campo | Descrição | ||||||
---|---|---|---|---|---|---|---|
Request URL url: <string> | Obrigatório. A URL de destino da solicitação HTTP. Alternativamente, você pode especificar os componentes da URL como campos de nível raiz. Consulte Argumentos Alternativos da URL . | ||||||
Request Body body: <object> or <string> | Obrigatório. O objeto ou corpo em cadeia de caracteres da solicitação HTTP. Se o payload da solicitação tiver um tipo de conteúdo de multipart/form-data , utilize o parâmetro form em vez de body . Se o corpo da solicitação for um objeto, o parâmetro encodeBodyAsJSON deverá ser true . | ||||||
Encode Body as JSON encodeBodyAsJSON: <boolean> | Se true , o corpo é codificado automaticamente como uma cadeia EJSON utilizando EJSON.stringify() . Use somente quando o parâmetro body for um objeto. | ||||||
Form Request Body form: <document> | Um documento onde cada campo é mapeado para um campo em uma solicitação de ObservaçãoAs solicitações que usam o parâmetro Exemplo
| ||||||
Request Headers headers: <document> | Opcional. Um documento em que cada nome de campo corresponde a um tipo de cabeçalho HTTP e cada valor de campo é uma matriz de um ou mais valores de cadeia de caracteres para esse cabeçalho. Exemplo
| ||||||
Request Cookies cookies: <document> | Opcional. Um documento onde cada nome de campo corresponde a um nome de cookie e cada valor de campo é o valor da cadeia de caracteres desse cookie. Exemplo
| ||||||
Digest Authentication digestAuth: <boolean> | Opcional. Se true , o App Services autenticará a solicitação usando a autenticação digest. Você deve especificar um username e password (como campos no documento de solicitação ou como parte do URL) para usar a autenticação digest. Para obter mais detalhes, consulte Solicitar autenticação. | ||||||
Request Authentication URL authUrl: <string> | Opcional. Uma URL que retorna um cookie de Autorização para o pedido HTTP. | ||||||
Follow Redirects followRedirects: <boolean> | Opcional. Se true , a solicitação seguirá todos os redirecionamentos HTTP recebidos para a URL de destino. |
Parâmetros de URL alternativos
Se você precisar especificar os componentes individuais da URL de destino do pedido, omita o campo url
e especifique os componentes como campos de nível de raiz. Os seguintes campos de componentes de URL estão disponíveis:
<scheme>://<host>/<path>?<query>#<fragment>
{ "scheme": <string>, "host": <string>, "path": <string>, "query": <document>, "fragment": <string>, "username": <string>, "password": <string> }
Nome | Conteúdos | |||||||
---|---|---|---|---|---|---|---|---|
scheme | Optional. Default: "http" .Valid options: https , http O esquema de URL. Exemplo
| |||||||
host | Required. O nome de host do recurso de destino. Exemplo
| |||||||
path | Optional. O caminho do recurso de destino. Exemplo
| |||||||
query | Optional. Um documento onde cada campo é mapeado para um parâmetro na string de query do URL. O valor de cada campo é uma array de strings que contém todos os argumentos para o parâmetro. Exemplo
| |||||||
fragment | Optional. O fragmento da URL. Esta parte da URL inclui tudo após o símbolo de hash ( Exemplo
| |||||||
username | Optional. O nome de usuário com o qual autenticar a solicitação. Tipicamente, os usuários utilizam esse argumento com o argumento | |||||||
password | Optional. A senha com a qual autenticar a solicitação. A senha deve corresponder ao usuário especificado no argumento |
Valor de retorno
A ação http.post()
retorna uma promessa que se mapeia a um documento com o seguinte formulário:
{ "status": <string>, "statusCode": <integer>, "contentLength": <integer>, "headers": <document>, "cookies": <array>, "body": <binary> }
Campo | Tipo | Descrição | |||
---|---|---|---|---|---|
status | string | A mensagem de status solicitação de HTTP. | |||
statusCode | inteiro | O código de status solicitação de HTTP. | |||
contentLength | inteiro | O número de bytes retornados na resposta body . | |||
headers | documento | Um documento em que cada nome de campo corresponde a um tipo de cabeçalho HTTP e cada valor de campo é uma array de um ou mais valores de cadeia de caracteres para esse cabeçalho. Exemplo
| |||
cookies | documento | Um documento onde cada nome de campo corresponde a um nome de cookie, e cada valor de campo é o valor de string do cookie. Exemplo
| |||
body | binário | O corpo codificado binário da resposta HTTP. |
Solicitar autenticação
Você pode autenticar uma solicitação de HTTP de saída utilizando um dos Esquemas de autenticação de HTTP padrão. O Atlas App Services oferece suporte aos seguintes esquemas de autenticação:
Autenticação básica
Autenticação básica de HTTP exige que as solicitações recebidas incluam um nome de usuário e senha válidos para o serviço solicitado. Você pode especificar as credenciais de usuário nos username
campos e password
do documento de solicitação, diretamente em uma url
string ou em uma Autorização cabeçalho HTTP.
Exemplo
Os exemplos seguintes demonstram três formas equivalentes de autenticar uma solicitação de serviço HTTP utilizando autenticação básica. Todos os exemplos utilizam o nome de usuário MyUser
e a senha Mypassw0rd
. Você passaria um desses objetos como um argumento para o método HTTP fornecido.
{ "scheme": "https", "username": "MyUser", "password": "Mypassw0rd", "domain": "www.example.com" }
{ "url": "https://MyUser:Mypassw0rd@www.example.com" }
{ "url": "https://www.example.com", "headers": { "Authorization": [ `Basic ${BSON.Binary.fromText("MyUser:Mypassw0rd").toBase64()}` ] } }
Autenticação Digest
A autenticação de digest HTTP exige que as solicitações recebidas incluam uma chave de autorização baseada em um valor aleatório não retornado do servidor. Os Serviços de Aplicativos podem construir automaticamente a chave e autorizar solicitações com um nome de usuário e senha válidos.
Para configurar uma solicitação para utilizar a autenticação digest, configure o campo digestAuth
para true
e especifique as credenciais de usuário nos campos username
e password
do documento da solicitação ou diretamente em uma string url
.
Exemplo
Os exemplos seguintes demonstram duas formas equivalentes de autenticar uma solicitação de serviço HTTP utilizando autenticação digest. Todos os exemplos utilizam o nome de usuário MyUser
e a senha Mypassw0rd
.
{ "scheme": "https", "username": "MyUser", "password": "Mypassw0rd", "domain": "www.example.com", "digestAuth": true }
{ "url": "https://MyUser:Mypassw0rd@www.example.com", "digestAuth": true }
Modelos de regra
Os usuários só podem enviar solicitações para um host específico
{ "%%args.url.host": "example.com" }
As URLs de solicitações devem incluir um parâmetro de consulta específico
{ "%%args.url.query.someParameter": "importantValue" }
Os corpos de solicitação devem incluir um campo específico
{ "body.name": { "%exists": 1 } }
Os corpos de solicitação devem incluir campos com valores específicos
{ "body.city": "New York City" }