Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
ОБЛАСТЬ ПРИМЕНЕНИЯ: все уровни Управление API
Политика http-data-source сопоставителя настраивает HTTP-запрос и при необходимости HTTP-ответ для разрешения данных для типа объекта и поля в схеме GraphQL. Схема должна быть импортирована в Управление API как API GraphQL.
Примечание.
Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.
Правило политики
<http-data-source>
<http-request>
<get-authorization-context>...get-authorization-context policy configuration...</get-authorization-context>
<set-backend-service>...set-backend-service policy configuration...</set-backend-service>
<set-method>...set-method policy configuration...</set-method>
<set-url>URL</set-url>
<include-fragment>...include-fragment policy configuration...</include-fragment>
<set-header>...set-header policy configuration...</set-header>
<set-body>...set-body policy configuration...</set-body>
<authentication-certificate>...authentication-certificate policy configuration...</authentication-certificate>
</http-request>
<backend>
<forward-request>...forward-request policy configuration...</forward-request>
<http-response>
<set-body>...set-body policy configuration...</set-body>
<xml-to-json>...xml-to-json policy configuration...</xml-to-json>
<find-and-replace>...find-and-replace policy configuration...</find-and-replace>
<publish-event>...publish-event policy configuration...</publish-event>
<include-fragment>...include-fragment policy configuration...</include-fragment>
</http-response>
</http-data-source>
Элементы
| Имя | Описание | Обязательное поле |
|---|---|---|
| HTTP-запрос | Указывает URL-адрес и дочерние политики для настройки HTTP-запроса сопоставителя. | Да |
| серверная часть | При необходимости перенаправляет HTTP-запрос сопоставителя в серверную службу, если указано. | нет |
| HTTP-ответ | При необходимости указывает дочерние политики для настройки HTTP-ответа сопоставителя. Если значение не указано, ответ возвращается в виде необработанной строки. | нет |
Элементы http-request
Примечание.
За исключением случаев, когда указано, каждый дочерний элемент может быть указан по крайней мере один раз. Укажите элементы в указанном порядке.
| Элемент | Описание | Обязательное поле |
|---|---|---|
| get-authorization-context | Возвращает контекст авторизации для HTTP-запроса сопоставителя. | нет |
| set-backend-service | Перенаправляет HTTP-запрос сопоставителя на указанную серверную часть. | нет |
| include-fragment | Вставляет фрагмент политики в определение политики. Если существует несколько фрагментов, добавьте дополнительные include-fragment элементы. |
нет |
| Set-method | Задает метод HTTP-запроса сопоставителя. | Да |
| set-url | Задает URL-адрес HTTP-запроса сопоставителя. | Да |
| Set-header | Задает заголовок в HTTP-запросе сопоставителя. Если есть несколько заголовков, добавьте дополнительные header элементы. |
нет |
| set-body | Задает текст в HTTP-запросе сопоставителя. | нет |
| authentication-certificate | Выполняет проверку подлинности с помощью сертификата клиента в HTTP-запросе сопоставителя. | нет |
внутренний элемент
| Элемент | Описание | Обязательное поле |
|---|---|---|
| forward-request | Перенаправляет HTTP-запрос сопоставителя в настроенную серверную службу. | нет |
Элементы http-response
Примечание.
За исключением случаев, когда указано, каждый дочерний элемент может быть указан по крайней мере один раз. Укажите элементы в указанном порядке.
| Имя | Описание | Обязательное поле |
|---|---|---|
| set-body | Задает текст в http-ответе сопоставителя. | нет |
| xml-to-json | Преобразует HTTP-ответ сопоставителя из XML в JSON. | нет |
| поиск и замена | Находит подстроку в http-ответе сопоставителя и заменяет ее другой подстрокой. | нет |
| publish-event | Публикует событие в одну или несколько подписок, указанных в схеме API GraphQL. | нет |
| include-fragment | Вставляет фрагмент политики в определение политики. Если существует несколько фрагментов, добавьте дополнительные include-fragment элементы. |
нет |
Использование
- Области политики: сопоставитель GraphQL
- Шлюзы: классическая, версия 2, потребление
Примечания об использовании
- Сведения о настройке сопоставителя и управлении ими с помощью этой политики см. в разделе "Настройка сопоставителя GraphQL".
- Эта политика вызывается только при разрешении одного поля в сопоставленном типе операции GraphQL в схеме.
Примеры
Сопоставитель для запроса GraphQL
В следующем примере запрос разрешается путем вызова HTTP GET к внутреннему источнику данных.
Пример схемы
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Пример политики
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://data.contoso.com/get/users</set-url>
</http-request>
</http-data-source>
Сопоставитель для запроса GraphQL, возвращающего список, с помощью шаблона Liquid
В следующем примере используется шаблон liquid, поддерживаемый для использования в политике set-body, для возврата списка в http-ответе на запрос. Он также переименовывает поле username в ответе от REST API в name в ответе GraphQL.
Пример схемы
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Пример политики
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://data.contoso.com/users</set-url>
</http-request>
<http-response>
<set-body template="liquid">
[
{% JSONArrayFor elem in body %}
{
"name": "{{elem.username}}"
}
{% endJSONArrayFor %}
]
</set-body>
</http-response>
</http-data-source>
Сопоставитель для изменения GraphQL
В следующем примере устранена мутация, которая вставляет данные, выполняя POST запрос к источнику данных HTTP. Выражение политики в политике set-body HTTP-запроса изменяет name аргумент, передаваемый в запросе GraphQL в качестве его сообщения. Отправляемый текст будет выглядеть как следующий JSON:
{
"name": "the-provided-name"
}
Пример схемы
type Query {
users: [User]
}
type Mutation {
makeUser(name: String!): User
}
type User {
id: String!
name: String!
}
Пример политики
<http-data-source>
<http-request>
<set-method>POST</set-method>
<set-url>https://data.contoso.com/user/create </set-url>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@{
var args = context.GraphQL.Arguments;
JObject jsonObject = new JObject();
jsonObject.Add("name", args["name"])
return jsonObject.ToString();
}</set-body>
</http-request>
</http-data-source>
Сопоставитель для типа объединения GraphQL
В следующем примере запрос разрешается orderById путем вызова HTTP GET к внутреннему источнику данных и возвращает объект JSON, содержащий идентификатор клиента и тип. Тип клиента — это объединение RegisteredCustomer типов и GuestCustomer типов.
Пример схемы
type Query {
orderById(orderId: Int): Order
}
type Order {
customerId: Int!
orderId: Int!
customer: Customer
}
enum AccountType {
Registered
Guest
}
union Customer = RegisteredCustomer | GuestCustomer
type RegisteredCustomer {
accountType: AccountType!
customerId: Int!
customerGuid: String!
firstName: String!
lastName: String!
isActive: Boolean!
}
type GuestCustomer {
accountType: AccountType!
firstName: String!
lastName: String!
}
Пример политики
В этом примере мы издеваемся над результатами клиента из внешнего источника и жесткого кода, полученный результатом в политике set-body . Поле __typename используется для определения типа клиента.
<http-data-source>
<http-request>
<set-method>GET</set-method>
<set-url>https://data.contoso.com/orders/</set-url>
</http-request>
<http-response>
<set-body>{"customerId": 12345, "accountType": "Registered", "__typename": "RegisteredCustomer" }
</set-body>
</http-response>
</http-data-source>
Связанные политики
Связанный контент
Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.
- Руководство. Преобразование и защита API
- Полный перечень операторов политик и их параметров см. в справочнике по политикам.
- Выражения политики
- Настройка или изменение политик
- Повторное использование конфигураций политик
- Репозиторий фрагментов политик
- Репозиторий игровой площадки политики
- Набор средств политики Управление API Azure
- Получите помощь Copilot для создания, объяснения и устранения неполадок в политике