Compartir vía


Publicación de eventos en una suscripción de GraphQL

SE APLICA A: todos los niveles de API Management

La directiva publish-event publica un evento en una o varias suscripciones especificadas en un esquema de API de GraphQL. Configure la directiva en un solucionador de GraphQL para un campo relacionado en el esquema para otro tipo de operación, como una mutación. En tiempo de ejecución, el evento se publica en clientes de GraphQL conectados. Obtenga más información sobre las API de GraphQL en API Management.

Nota

Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.

Instrucción de la directiva

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

Elementos

Nombre Descripción Obligatorio
destinos Una o varias suscripciones del esquema de GraphQL, especificadas en target subelementos, en las que se publica el evento.

Uso

Notas de uso

  • Esta directiva solo se invoca cuando se ejecuta una consulta relacionada de GraphQL o se ejecuta una mutación.

Ejemplo

La siguiente definición de directiva de ejemplo se configura en una resolución para la mutación createUser. Publica un evento en la suscripción onUserCreated.

Esquema de ejemplo

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


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

type Subscription {
    onUserCreated: User!
}

Ejemplo de directiva

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

Para más información sobre el trabajo con directivas, vea: