将事件发布到 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 子元素中指定。

使用情况

使用注意事项

  • 仅当执行相关 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>

后续步骤

有关使用策略的详细信息,请参阅: