Docs Menu
Docs Home
/ /
HTTP

http.post()

http.post()

Envía un Publicación HTTPsolicitud a la URL especificada mediante el servicio HTTP de Atlas App Services.

Nota

Este ejemplo asume que ha configurado un servicio HTTP llamado "myHttp". Si no necesita validar esta acción HTTP con las reglas de servicio, puede usar el módulo "Enviar una solicitud HTTP"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;
})
};

La acción http.post() acepta un argumento de la siguiente forma:

{
"url": <string>,
"headers": <document>,
"body": <object> or <string>,
"encodeBodyAsJSON": <boolean>,
"form": <document>,
"cookies": <string>,
"authUrl": <string>,
"followRedirects": <boolean>
}
Campo
Descripción

Request URL

url: <string>

Obligatorio. La URL de destino de la solicitud HTTP. Como alternativa, puede especificar los componentes de la URL como campos de nivel raíz. Consulte Argumentos de URL alternativos.

Request Body

body: <object> or <string>

Obligatorio. El objeto o el cuerpo en cadena de la solicitud HTTP. Si la carga útil de la solicitud tiene un tipo de contenido multipart/form-data, utilice el parámetro form en lugar de body. Si el cuerpo de la solicitud es un objeto, el parámetro encodeBodyAsJSON debe ser true.

Encode Body as JSON

encodeBodyAsJSON: <boolean>

Si es true, el cuerpo se codifica automáticamente como una cadena EJSON usando EJSON.stringify(). Úselo solo cuando el parámetro body sea un objeto.

Form Request Body

form: <document>

Un documento donde cada campo corresponde a un campo en una solicitud multipart/form-data. No puedes usar este parámetro al mismo tiempo que el parámetro body.

Nota

Las solicitudes que utilizan el parámetro form también deben incluir un encabezado Content-Type: multipart/form-data.

Ejemplo

"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. Un documento en el que cada nombre de campo corresponde a un tipo de encabezado HTTP y cada valor de campo es un arreglo de uno o más valores de string para ese encabezado.

Ejemplo

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

Request Cookies

cookies: <document>

Opcional. Un documento donde cada nombre de campo corresponde a un nombre de cookie y cada valor de campo es el valor de cadena de esa cookie.

Ejemplo

{
"favoriteTeam": "Chicago Cubs"
}

Digest Authentication

digestAuth: <boolean>

Opcional. Si true es, App Services autentica la solicitud mediante autenticación implícita. Debe especificar username y password (ya sea como campos en el documento de solicitud o como parte de la URL) para usar la autenticación implícita. Para obtener más información, consulte Autenticación de solicitudes.

Request Authentication URL

authUrl: <string>

Opcional. Una URL que devuelve una cookie de autorización para la solicitud HTTP.

Follow Redirects

followRedirects: <boolean>

Opcional. Si es true, la solicitud seguirá cualquier redirección HTTP que reciba para la URL de destino.

Si necesita especificar los componentes individuales de la URL de destino de la solicitud, omita el campo url y especifique los componentes como campos de nivel raíz. Están disponibles los siguientes campos de componentes de URL:

<scheme>://<host>/<path>?<query>#<fragment>
{
"scheme": <string>,
"host": <string>,
"path": <string>,
"query": <document>,
"fragment": <string>,
"username": <string>,
"password": <string>
}
Nombre
Contenido

scheme

Optional. Default: "http".
Valid options: https, http

El esquema de URL.

Ejemplo

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

host

Required.

El nombre de host del recurso de destino.

Ejemplo

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

path

Optional.

La ruta del recurso de destino.

Ejemplo

// https://www.example.com/api/v1/users
{ path: "/api/v1/users" }

query

Optional.

Un documento donde cada campo se asigna a un parámetro en la cadena de consulta de la URL. El valor de cada campo es una matriz de cadenas que contiene todos los argumentos del parámetro.

Ejemplo

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

fragment

Optional.

El fragmento de URL. Esta parte de la URL incluye todo lo que aparece después del símbolo numeral (#).

Ejemplo

// https://www.example.com/?id=8675309#someFragment
{ fragment: "someFragment" }

username

Optional.

El nombre de usuario con el que se autenticará la solicitud. Normalmente, los usuarios utilizan este argumento junto con el argumento password.

password

Optional.

La contraseña para autenticar la solicitud. Debe corresponder al usuario especificado en el argumento username.

La acción http.post() devuelve una promesa que se resuelve en un documento con el siguiente formato:

{
"status": <string>,
"statusCode": <integer>,
"contentLength": <integer>,
"headers": <document>,
"cookies": <array>,
"body": <binary>
}
Campo
Tipo
Descripción

status

string

El mensaje de estado de la solicitud HTTP.

statusCode

entero

El código de estado de la solicitud HTTP.

contentLength

entero

El número de bytes devueltos en la respuesta body.

headers

Documento

Un documento donde cada nombre de campo corresponde a un tipo de encabezado HTTP y cada valor de campo es una matriz de uno o más valores de cadena para ese encabezado.

Ejemplo

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

cookies

Documento

Un documento donde cada nombre de campo corresponde a un nombre de cookie, y cada valor de campo es el valor de cadena de esa cookie.

Ejemplo

{
"favoriteTeam": "Chicago Cubs"
}

body

Binario

El cuerpo codificado en binario de la respuesta HTTP.

Puede autenticar una solicitud HTTP saliente mediante uno de los esquemas de autenticación HTTP estándar. Atlas App Services admite los siguientes esquemas de autenticación:

La autenticación básica HTTP requiere que las solicitudes entrantes incluyan un nombre de usuario y una contraseña válidos para el servicio solicitado. Puede especificar las credenciales de usuario en los username campos y password del documento de solicitud, directamente url en una cadena o en un encabezado HTTP de autorización.

Ejemplo

Los siguientes ejemplos demuestran tres formas equivalentes de autenticar una solicitud de HTTP service utilizando la autenticación básica. Todos los ejemplos utilizan el nombre de usuario MyUser y la contraseña Mypassw0rd. Se pasaría uno de estos objetos como argumento al método HTTP indicado.

Especificar credenciales directamente (mejor método)
{
"scheme": "https",
"username": "MyUser",
"password": "Mypassw0rd",
"domain": "www.example.com"
}
Insertar credenciales en la URL
{
"url": "https://MyUser:Mypassw0rd@www.example.com"
}
Incluir un encabezado de autorización
{
"url": "https://www.example.com",
"headers": {
"Authorization": [
`Basic ${BSON.Binary.fromText("MyUser:Mypassw0rd").toBase64()}`
]
}
}

La autenticación de resumen HTTP requiere que las solicitudes entrantes incluyan una clave de autorización basada en un valor nonce aleatorio devuelto por el servidor. App Services puede construir automáticamente la clave y autorizar las solicitudes con un nombre de usuario y una contraseña válidos.

Para configurar una solicitud para utilizar la autenticación de resumen, establezca el campo digestAuth en true y especifique las credenciales del usuario en los campos username y password del documento de solicitud o directamente en una cadena url.

Ejemplo

Los siguientes ejemplos demuestran dos formas equivalentes de autenticar una solicitud de servicio HTTP utilizando autenticación por suma de comprobación. Todos los ejemplos utilizan el nombre de usuario MyUser y la clave Mypassw0rd.

Especificar credenciales directamente (mejor método)
{
"scheme": "https",
"username": "MyUser",
"password": "Mypassw0rd",
"domain": "www.example.com",
"digestAuth": true
}
Insertar credenciales en la 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"
}

Volver

http.get()

En esta página