Docs 菜单

Docs 主页Atlas App Services

HTTP 服务[已弃用]

在此页面上

  • 概述
  • 配置参数
  • 服务操作
  • 和传入网络钩子,
  • 配置
  • 请求有效负载
  • Webhook 函数示例

重要

第三方服务和推送通知弃用

App Services 中的第三方服务和推送通知已弃用,转而创建在函数中使用外部依赖项的 HTTP 端点。

Webhook 已重命名为 HTTPS 端点,行为没有发生变化。您应该迁移现有的 Webhook。

现有服务将继续运行到 2024 年 11 月 1 日

由于第三方服务和推送通知现已弃用,因此,默认将其从 App Services 用户界面中删除。如果您需要管理现有的第三方服务或推送通知,可以执行以下操作以将配置重新添加到用户界面中:

  • 在左侧导航栏中的 Manage(管理)部分下面,单击 App Settings(应用设置)。

  • 启用 Temporarily Re-Enable 3rd Party Services(暂时重新启用第三方服务)旁边的切换开关,然后保存更改。

Atlas App Services HTTP Service 是一个通用接口,可让您与任何可通过 HTTP 提供的服务(例如提供 REST API 的服务)进行通信。当您需要使用 App Services 中未内置自定义服务的服务时,此功能非常有用。

创建 HTTP Service 接口时,您需要为以下参数提供值:

范围
说明
Service Name
config.name
此 HTTP Service 接口的名称。它必须不同于应用程序中的所有其他服务接口。

App Services 中的 HTTP 服务提供以下操作,您可以在 函数 和 SDK 中调用这些操作。每个操作都映射到一个标准 HTTP 请求方法。

有关使用 HTTP 服务操作的说明,请参阅调用服务操作。

注意

必须先启用服务规则中的服务操作,然后才能调用。

注意

将 HTTP Webhook 转换为端点

HTTP Service webhook 已弃用,取而代之的是自定义 HTTPS endpoints。您可以一键将现有 Webhook 自动迁移到端点。 要了解如何操作,请参阅将 Webhook 转换为 HTTPS endpoints。

配置值
说明
Webhook 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 配置为接受任何方法或指定特定方法。支持以下方法:

  • GET

  • POST

  • PUT

  • PATCH

  • DELETE

  • HEAD

  • ANY

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 中包含的外部服务。

例子

使用查询参数someParameter=42&anotherParameter=hello发送到 Webhook URL 的请求将包含以下query文档:

"query": {
"someParameter": 42,
"anotherParameter": "hello"
}
headers

每个字段对应一个 HTTP 标头 的文档 Webhook URL 中包含的外部服务。

例子

发送到带有Content-Type: application/json标头的 Webhook URL 的请求将包含以下headers文档:

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

从请求正文编码的BSON.Binary对象。 您可以通过将二进制对象序列化为字符串,然后将该字符串解析为 EJSON 来访问请求正文:

const body = EJSON.parse(payload.body.text())

以下 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);
})
};
← 配置服务规则 [已弃用]