跳到主要内容

Callback 对象

A map of possible out-of band callbacks related to the parent operation. 映射中的每个值都是一个描述一组可能会被 API 提供者发起的请求和相应的响应的 Path Item 对象。用以标识回调对象的键是一个表达式,表达式会在运行时被计算,得到的值作为回调操作的 URL。

模式字段

字段名模式类型描述
{expression}Path Item 对象一个用于定义回调请求和响应的 Path Item 对象。 A complete example is available.

这个对象可能会被规范扩展扩展。

Key Expression

用于标识 Path Item 对象 的键是一个 runtime expression,此表达式会在运行时的 HTTP 请求/响应上下文中被计算,计算结果用于表示回调请求的 URL。 一个简单的例子是 $request.body#/url。 However, using a runtime expression the complete HTTP message can be accessed. This includes accessing any part of a body that a JSON Pointer RFC6901 can reference.

比如有如下 HTTP 请求:

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

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

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

下方示例展示了各种表达式是如何被计算,这里假设回调操作有一个名为 eventType 的路径参数和一个名为 queryUrl 的查询参数。

ExpressionValue
$urlhttp://example.org/subscribe/myevent?queryUrl=http://clientdomain.com/stillrunning
$methodPOST
$request.path.eventTypemyevent
$request.query.queryUrlhttp://clientdomain.com/stillrunning
$request.header.content-Typeapplication/json
$request.body#/failedUrlhttp://clientdomain.com/stillrunning
$request.body#/successUrls/2http://clientdomain.com/medium
$response.header.Locationhttp://example.org/subscription/1

Callback 对象示例

如下示例展示了一个通过请求体内的 idemail 属性指定的 URL 的回调。

myWebhook:
'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: webhook successfully processed and no retries will be performed