Share via


Gebeurtenis publiceren naar GraphQL-abonnement

VAN TOEPASSING OP: Alle API Management-lagen

Het publish-event beleid publiceert een gebeurtenis naar een of meer abonnementen die zijn opgegeven in een GraphQL API-schema. Configureer het beleid in een GraphQL-resolver voor een gerelateerd veld in het schema voor een ander bewerkingstype, zoals een mutatie. Tijdens runtime wordt de gebeurtenis gepubliceerd naar verbonden GraphQL-clients. Meer informatie over GraphQL-API's in API Management.

Notitie

Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.

Beleidsinstructie

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

Elementen

Name Beschrijving Vereist
Doelstellingen Een of meer abonnementen in het GraphQL-schema, opgegeven in target subelementen, waarnaar de gebeurtenis wordt gepubliceerd. Ja

Gebruik

Gebruiksnotities

  • Dit beleid wordt alleen aangeroepen wanneer een gerelateerde GraphQL-query of mutatie wordt uitgevoerd.

Opmerking

De volgende voorbeeldbeleidsdefinitie is geconfigureerd in een resolver voor de createUser mutatie. Er wordt een gebeurtenis naar het onUserCreated abonnement gepubliceerd.

Voorbeeldschema

type User {
  id: Int!
  name: String!
}


type Mutation {
    createUser(id: Int!, name: String!): User
}

type Subscription {
    onUserCreated: User!
}

Voorbeeldbeleid

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

Zie voor meer informatie over het werken met beleid: