Importante
Servicios de terceros y notificaciones push obsoletos
Los servicios de terceros y las notificaciones push en App Services han quedado obsoletos en favor de la creación de puntos finales HTTP que usan dependencias externas en funciones.
Los webhooks se han renombrado como puntos finales HTTPS sin cambios en su comportamiento. Debe migrar los webhooks existentes.
Los servicios existentes continuarán funcionando hasta el de septiembre 30 2025de.
Dado que los servicios de terceros y las notificaciones push ya no se utilizan, se han eliminado de forma predeterminada de la interfaz de usuario de App Services. Si necesita administrar un servicio de terceros o una notificación push existente, puede volver a agregar las configuraciones a la interfaz de usuario siguiendo estos pasos:
En la navegación izquierda, debajo del Manage sección, haga clic en App Settings.
Habilite el interruptor junto a Temporarily Re-Enable 3rd Party Services y luego guarde los cambios.
Overview
El Atlas App Services HTTP Service es una interfaz genérica que permite comunicarse con cualquier servicio disponible a través de HTTP, como aquellos que proporcionan una REST API. Esto es útil cuando necesitas usar un servicio que no cuenta con un servicio personalizado funcionalidad incorporada a aplicación Services.
Para enviar una solicitud HTTP saliente, llame a uno de los Acciones HTTP.
Para gestionar las solicitudes entrantes de un servicio externo, configure un webhook entrante y proporciónelo al servicio, si es posible. Consulte la sección de webhooks entrantes en esta página para ver un ejemplo.
Parámetros de configuración
Necesitará proporcionar valores para los siguientes parámetros cuando cree una interfaz de servicio HTTP:
{ "name": "<Service Name>", "type": "http", "config": {} }
Parameter | Descripción |
|---|---|
Service Name config.name | El nombre de esta interfaz de servicio HTTP. Debe ser único respecto a las demás interfaces de servicio de la aplicación. |
Acciones de servicio
El servicio HTTP de App Services ofrece las siguientes acciones, que se pueden ejecutar en funciones y en los SDK. Cada acción se asigna a un método de solicitud HTTP estándar.
Para obtener instrucciones sobre el uso de una acción de servicio HTTP,consulte Llamar a una acción de servicio.
Nota
Debe habilitar una acción de servicio en una regla de servicio antes de poder llamarla.
Acción | Descripción |
|---|---|
Enviar una solicitud HTTP GET. | |
Enviar una solicitud HTTP POST. | |
Enviar una solicitud HTTP PUT. | |
Enviar una solicitud HTTP PATCH. | |
Enviar una solicitud HTTP DELETE. | |
Enviar una solicitud HTTP HEAD. |
Webhooks entrantes
Nota
Convertir webhooks HTTP en puntos finales
Los webhooks de servicio HTTP están obsoletos y se sustituyen por endpoints HTTPS personalizados. Puede migrar automáticamente sus webhooks existentes a endpoints con un solo clic. Para saber cómo, consulte Convertir webhooks a endpoints HTTPS.
Configuración
Necesitará proporcionar valores para los siguientes parámetros cuando configure un webhook entrante HTTP:
Necesitará proporcionar un archivo de configuración con el siguiente formato cuando configure un webhook entrante HTTP:
{ "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>", "respond_result": <Boolean>, "fetch_custom_user_data": <Boolean>, "create_user_on_auth": <Boolean>, "options": { "httpMethod": "<HTTP Method>", "validationMethod": "<Webhook Validation Method>", "secret": "<Webhook Secret>" } }
Valor de configuración | Descripción |
|---|---|
Webhook Name name | Obligatorio. El nombre del webhook. NotaCada webhook entrante en una interfaz de servicio HTTP debe tener un nombre único. |
Respond With Result respond_result | Obligatorio. Si es |
Run Webhook As run_as_user_id run_as_user_id_script_source | Opcional. El ID del usuario de App Services que ejecuta la función de webhook cuando se llama a este. Existen tres formas de configurar el usuario de ejecución:
Puede especificar el ID de usuario directamente en |
HTTP Method options.httpMethod | El método HTTP que deben usar las solicitudes de webhook entrantes. Puede configurar un webhook para que acepte cualquier método o especificar uno específico. Se admiten los siguientes métodos:
|
Request Validation options.validationMethod | El método de validación que deben utilizar las solicitudes entrantes. Se admiten los siguientes tipos de validación:
|
Secret options.secret | Si Request Validation está habilitado, este es el secreto de validación. |
Solicitud de carga útil
App Services pasa automáticamente un documento payload como primer argumento a las funciones de webhook entrantes. En un webhook entrante de un servicio HTTP, el objeto payload representa una solicitud HTTP entrante y tiene el siguiente formato:
{ "query": <query parameters>, "headers": <request headers>, "body": <request body (BSON)> }
Campo | Descripción | ||||
|---|---|---|---|---|---|
| Un documento donde cada campo corresponde a un parámetro de consulta que el servicio externo incluyó en la URL del webhook. EjemploUna solicitud enviada a una URL de webhook con los parámetros de consulta | ||||
| Un documento donde cada campo corresponde a un encabezado HTTP que el servicio externo incluyó en la URL del webhook. EjemploUna solicitud enviada a una URL de webhook con un encabezado | ||||
| Un objeto BSON.Binary codificado a partir del cuerpo de la solicitud. Puedes acceder al cuerpo de la solicitud serializando el objeto binario en una string y luego convirtiendo la string a EJSON: |
Ejemplo de función de webhook
La siguiente función de webhook inserta datos entrantes en una colección MongoDB y devuelve insertedId en la respuesta body.
exports = function(payload, response) { const mongodb = context.services.get("mongodb-atlas"); const requestLogs = mongodb.db("test").collection("requestlogs"); requestLogs.insertOne({ body: EJSON.parse(payload.body.text()), query: payload.query }).then(result => { response.setStatusCode(201); response.setBody(result.insertedId); }) };