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

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
http.post()

Envia um HTTP POST solicitação para a especificada URL usando o Serviço do Atlas App Services HTTP Service.

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;
})
};

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 multipart/form-data. Não é permitido usar este parâmetro ao mesmo tempo que o parâmetro body.

Observação

As solicitações que usam o parâmetro form também devem incluir um cabeçalho Content-Type: multipart/form-data.

Exemplo

"form": {
"to-address": "name@example.com",
"from-address": "other-name@example.com",
"subject": "test subject please ignore",
"message-body": "hello from the message body"
}

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

{
"Content-Type": [ "application/json" ]
}

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

{
"favoriteTeam": "Chicago Cubs"
}

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.

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

// https://www.example.com/
{ scheme: "https" }
host
Required.

O nome de host do recurso de destino.

Exemplo

// https://www.example.com/
{ host: "www.example.com" }
path
Optional.

O caminho do recurso de destino.

Exemplo

// https://www.example.com/api/v1/users
{ path: "/api/v1/users" }
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

// https://www.example.com/?id=8675309&color=red&color=blue
{
query: {
"id": ["8675309"],
"color": ["red", "blue"]
}
}
fragment
Optional.

O fragmento da URL. Esta parte da URL inclui tudo após o símbolo de hash (#).

Exemplo

// https://www.example.com/?id=8675309#someFragment
{ fragment: "someFragment" }
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.

password
Optional.

A senha com a qual autenticar a solicitação. A senha deve corresponder ao usuário especificado no argumento username.

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

{
"Content-Type": [ "application/json" ]
}
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

{
"favoriteTeam": "Chicago Cubs"
}
body
binário
O corpo codificado binário da resposta HTTP.

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 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.

Especificar credenciais diretamente (Melhor método)
{
"scheme": "https",
"username": "MyUser",
"password": "Mypassw0rd",
"domain": "www.example.com"
}
Incorporar Credenciais na URL
{
"url": "https://MyUser:Mypassw0rd@www.example.com"
}
Incluir um cabeçalho de autorização
{
"url": "https://www.example.com",
"headers": {
"Authorization": [
`Basic ${BSON.Binary.fromText("MyUser:Mypassw0rd").toBase64()}`
]
}
}

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.

Especificar credenciais diretamente (Melhor método)
{
"scheme": "https",
"username": "MyUser",
"password": "Mypassw0rd",
"domain": "www.example.com",
"digestAuth": true
}
Incorporar Credenciais na URL
{
"url": "https://MyUser:Mypassw0rd@www.example.com",
"digestAuth": true
}
{
"%%args.url.host": "example.com"
}
{
"%%args.url.query.someParameter": "importantValue"
}
{
"body.name": { "%exists": 1 }
}
{
"body.city": "New York City"
}

Voltar

http.get()