Поделиться через


Публикация события в подписке GraphQL

ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API

Политика publish-event публикует событие в одну или несколько подписок, указанных в схеме API GraphQL. Настройте политику в сопоставитель 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>

Элементы

Имя Описание Обязательное поле
Prometheus Одна или несколько подписок в схеме 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>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.