Publier un événement dans un abonnement GraphQL

S’APPLIQUE À : tous les niveaux de Gestion des API

La stratégie publish-event publie un événement dans un ou plusieurs abonnements spécifiés dans un schéma de l’API GraphQL. Configurez la stratégie dans un résolveur GraphQL relatif à un champ connexe dans le schéma pour un autre type d’opération à l’instar d’une mutation. À l’exécution, l’événement est publié pour les clients GraphQL connectés. En savoir plus sur les API GraphQL dans Gestion des API.

Notes

Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.

Instruction de la stratégie

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

Éléments

Nom Description Obligatoire
cibles Un ou plusieurs abonnements du schéma GraphQL, spécifiés dans les sous-éléments target, sur lesquels l’événement est publié. Oui

Usage

Notes d’utilisation

  • Cette stratégie n’est appelée que lorsqu’une requête ou une mutation GraphQL liée est exécutée.

Exemple

L’exemple de définition de stratégie suivant est configuré dans un résolveur pour la mutation createUser. Il publie un événement dans l’abonnement onUserCreated.

Exemple de schéma

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


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

type Subscription {
    onUserCreated: User!
}

Exemple de stratégie

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

Pour plus d’informations sur l’utilisation des stratégies, consultez :