OpenAPI 规范 v3.1.0
OpenAPI 规范 v3.1.0
1. OpenAPI 规范
2. 简介
3. 定义
4. 规范
4.1 版本
4.2 格式
4.3 文档结构
4.4 数据类型
4.5 富文本格式化
4.6 URI 中的相对引用
4.7 URL 中的相对引用
4.8 模式
4.9 规范扩展
4.10 安全过滤
4.8.18 Callback 对象
创建时间: 2025-05-29 16:38

与父操作相关的可能的带外回调的映射。映射中的每个值都是一个路径项对象,它描述了一组可能由 API 提供者发起的请求和预期的响应。用于标识路径项对象的键值是在运行时计算的表达式,用于标识用于回调操作的 URL。要描述来自 API 提供者的传入请求,使其独立于其他 API 调用,请使用webhooks字段。

4.8.18.1 模式化字段
字段模式类型描述
{表达式}路径项对象 引用对象用于定义回调请求和预期响应的路径项对象或对它的引用。提供了完整示例

此对象*可以使用 规范扩展 进行扩展。

4.8.18.2 键表达式

用于标识路径项对象的键是一个运行时表达式,可以在运行时 HTTP 请求/响应的上下文中进行计算,以标识用于回调请求的 URL。一个简单的例子可能是$request.body#/url。但是,使用运行时表达式可以访问完整的 HTTP 消息。这包括访问 JSON 指针[RFC6901]可以引用的主体任何部分。

例如,给定以下 HTTP 请求

POST /subscribe/myevent?queryUrl=https://clientdomain.com/stillrunning HTTP/1.1
Host: example.org
Content-Type: application/json
Content-Length: 187

{
  "failedUrl" : "https://clientdomain.com/failed",
  "successUrls" : [
    "https://clientdomain.com/fast",
    "https://clientdomain.com/medium",
    "https://clientdomain.com/slow"
  ]
}

201 Created
Location: https://example.org/subscription/1

以下示例显示了各种表达式的计算方式,假设回调操作具有名为eventType的路径参数和名为queryUrl的查询参数。

表达式
$urlhttps://example.org/subscribe/myevent?queryUrl=https://clientdomain.com/stillrunning
$methodPOST
$request.path.eventTypemyevent
$request.query.queryUrlhttps://clientdomain.com/stillrunning
$request.header.content-Typeapplication/json
$request.body#/failedUrlhttps://clientdomain.com/failed
$request.body#/successUrls/2https://clientdomain.com/medium
$response.header.Locationhttps://example.org/subscription/1
4.8.18.3 Callback 对象示例

以下示例使用用户提供的queryUrl查询字符串参数来定义回调 URL。这是一个如何使用回调对象来描述与订阅操作相关的 WebHook 回调以启用 WebHook 注册的示例。

myCallback:
  '{$request.query.queryUrl}':
    post:
      requestBody:
        description: Callback payload
        content:
          'application/json':
            schema:
              $ref: '#/components/schemas/SomePayload'
      responses:
        '200':
          description: callback successfully processed

以下示例显示了一个回调,其中服务器是硬编码的,但查询字符串参数是从请求主体中的idemail属性填充的。

transactionCallback:
  'http://notificationServer.com?transactionId={$request.body#/id}&email={$request.body#/email}':
    post:
      requestBody:
        description: Callback payload
        content:
          'application/json':
            schema:
              $ref: '#/components/schemas/SomePayload'
      responses:
        '200':
          description: callback successfully processed
最后更新: -