HTTP 服务[已弃用]
重要
第三方服务和推送通知弃用
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 请求,请调用其中一个HTTP 操作。
要处理来自外部服务的传入请求,请配置传入的 Webhook并将其提供给该服务(如果可能)。有关示例,请参阅本页上的传入 Webhook部分。
配置参数
创建 HTTP Service 接口时,您需要为以下参数提供值:
范围 | 说明 |
---|---|
Service Name config.name | 此 HTTP Service 接口的名称。它必须不同于应用程序中的所有其他服务接口。 |
服务操作
App Services 中的 HTTP 服务提供以下操作,您可以在 函数 和 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。
配置
配置值 | 说明 |
---|---|
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 配置为接受任何方法或指定特定方法。支持以下方法:
|
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); }) };