将事件发布到 GraphQL 订阅
适用于:所有 API 管理层级
publish-event
策略可将事件发布到 GraphQL API 架构中指定的一个或多个订阅。 为架构中的相关字段配置 GraphQL 解析程序中的策略,以便用于另一种操作类型,如变更。 在运行时,事件会发布到连接的 GraphQL 客户端。 详细了解 API 管理中的 GraphQL API。
注意
按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略。
策略语句
<http-data-source>
<!-- http-data-source is an example resolver policy -->
<http-request>
[...]
</http-request>
<http-response>
[...]
<publish-event>
<targets>
<graphql-subscription id="subscription field" />
</targets>
</publish-event>
</http-response>
</http-data-source>
元素
名称 | 说明 | 必选 |
---|---|---|
目标 | 事件发布目标位置的 GraphQL 架构中的一个或多个订阅,在 target 子元素中指定。 |
是 |
使用情况
- 策略部分:
http-data-source
解析程序中的http-response
元素 - 策略范围:仅限 GraphQL 解析程序
- 网关:经典、消耗
使用注意事项
- 仅当执行相关 GraphQL 查询或变异时,才会调用此策略。
示例
以下示例策略定义在 createUser
变异的解析程序中配置。 它会将事件发布到 onUserCreated
订阅。
示例架构
type User {
id: Int!
name: String!
}
type Mutation {
createUser(id: Int!, name: String!): User
}
type Subscription {
onUserCreated: User!
}
示例策略
<http-data-source>
<http-request>
<set-method>POST</set-method>
<set-url>https://contoso.com/api/user</set-url>
<set-body template="liquid">{ "id" : {{body.arguments.id}}, "name" : "{{body.arguments.name}}"}</set-body>
</http-request>
<http-response>
<publish-event>
<targets>
<graphql-subscription id="onUserCreated" />
</targets>
</publish-event>
</http-response>
</http-data-source>
相关策略
后续步骤
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 策略示例