GraphQL サブスクリプションにイベントを発行する

適用対象: すべての API Management レベル

publish-event ポリシーは、GraphQL API スキーマで指定された 1 つ以上のサブスクリプションにイベントを発行します。 ミューテーションなど、別の操作タイプのスキーマ内の関連フィールド用 GraphQL リゾルバー内にポリシーを構成します。 実行時に、イベントが接続された GraphQL クライアントに発行されます。 API Management の GraphQL API について詳しくは、こちらを参照してください。

注意

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<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>

要素

名前 説明 必須
ターゲット target サブ要素で指定された、イベントが発行される先の、GraphQL スキーマ内の 1 つ以上のサブスクリプション。 Yes

使用法

使用上の注意

  • このポリシーは、関連する 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>

ポリシーに対する処理の詳細については、次のトピックを参照してください。