HTTP 服务[已弃用]
重要
第三方服务和推送通知弃用
App Services 中的第三方服务和推送通知已弃用,转而创建在函数中使用外部依赖项的 HTTP 端点。
Webhook 已重命名为 HTTPS 端点,行为没有发生变化。您应该迁移现有的 Webhook。
现有服务将继续运行到 9 月30 ,2025 。
由于第三方服务和推送通知现已弃用,因此,默认将其从 App Services 用户界面中删除。如果您需要管理现有的第三方服务或推送通知,可以执行以下操作以将配置重新添加到用户界面中:
在左侧导航栏中的 Manage(管理)部分下面,单击 App Settings(应用设置)。
启用 Temporarily Re-Enable 3rd Party Services(暂时重新启用第三方服务)旁边的切换开关,然后保存更改。
Overview
Atlas App Services HTTP Service 是一个通用接口,可让您与任何可通过 HTTP 提供的服务(例如提供 REST API 的服务)进行通信。当您需要使用 App Services 中未内置自定义服务的服务时,此功能非常有用。
要发送出站HTTP请求,请调用 HTTP操作之一。
要处理来自外部服务的传入请求,请配置传入的 Webhook并将其提供给该服务(如果可能)。 有关示例,请参阅本页上的传入 Webhook部分。
配置参数
创建 HTTP Service 接口时,您需要为以下参数提供值:
{ "name": "<Service Name>", "type": "http", "config": {} }
Parameter | 说明 |
---|---|
Service Name config.name | 此 HTTP Service 接口的名称。它必须不同于应用程序中的所有其他服务接口。 |
服务操作
App Services中的HTTP Service服务提供以下操作,您可以在函数和 SDK 中调用这些操作。 每个动作都映射到一个标准 HTTP请求方法。
有关使用 HTTP 服务操作的说明,请参阅调用服务操作。
注意
必须先启用服务规则中的服务操作,然后才能调用。
操作 | 说明 |
---|---|
发送 HTTP GET 请求。 | |
发送 HTTP POST 请求。 | |
发送 HTTP PUT 请求。 | |
发送 HTTP PATCH 请求。 | |
发送 HTTP DELETE 请求。 | |
发送 HTTP HEAD 请求。 |
和传入网络钩子,
注意
将 HTTP Webhook 转换为端点
HTTP Service webhook 已弃用,取而代之的是自定义 HTTPS endpoints。您可以一键将现有 Webhook 自动迁移到端点。 要了解如何操作,请参阅将 Webhook 转换为 HTTPS endpoints。
配置
配置HTTP传入 Webhook 时,您需要提供以下形式的 配置文件 :
{ "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>" } }
配置值 | 说明 |
---|---|
Webhook Name name | 必需。 Webhook 的名称。 注意HTTP 服务接口中的每个传入 Webhook 都必须具有唯一名称。 |
Respond With Result respond_result | 必需。 如果 true ,则 App Services 向调用 Webhook 的客户端发送响应。 响应正文将是 Webhook 函数的返回值。 |
Run Webhook As run_as_user_id run_as_user_id_script_source | 可选。 调用 Webhook 时执行 Webhook 函数的App Services 用户的 ID。 您可以直接在 |
HTTP Method options.httpMethod | HTTP方法 传入的 Webhook 请求应使用的名称。您可以将 Webhook 配置为接受任何方法或指定特定方法。 支持以下方法:
|
Request Validation options.validationMethod | 传入请求应使用的请求验证方法。 支持以下验证类型:
|
Secret options.secret | 如果启用了Request Validation ,则这就是验证密钥。 |
请求有效负载
App Services 会自动将payload
文档作为第一个参数传递给传入的 Webhook 函数。 在 HTTP Service 传入的 Webhook 中, payload
对象表示传入的 HTTP 请求,并具有以下形式:
{ "query": <query parameters>, "headers": <request headers>, "body": <request body (BSON)> }
字段 | 说明 | ||||
---|---|---|---|---|---|
query | 每个字段对应一个 查询参数 的文档 Webhook URL中包含的外部服务。 例子使用查询参数
| ||||
headers | 每个字段对应一个 HTTP标头 的文档 Webhook URL中包含的外部服务。 例子发送到带有
| ||||
body | 从请求正文编码的BSON.Binary对象。 您可以通过将二进制对象序列化为字符串,然后将该字符串解析为 EJSON 来访问请求正文:
|
Webhook 函数示例
以下 Webhook 函数将传入数据插入 MongoDB collection,并在响应 中返回insertedId
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); }) };