Zdroj dat HTTP pro překladač
PLATÍ PRO: Všechny úrovně služby API Management
Zásada http-data-source
překladače nakonfiguruje požadavek HTTP a volitelně odpověď HTTP pro překlad dat pro typ objektu a pole ve schématu GraphQL. Schéma se musí importovat do služby API Management jako rozhraní GraphQL API.
Poznámka:
Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.
Prohlášení o zásadách
<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>
Elementy
Název | Popis | Povinní účastníci |
---|---|---|
http-request | Určuje zásady adresy URL a podřízené pro konfiguraci požadavku HTTP překladače. | Ano |
back-end | Volitelně předá požadavek HTTP překladače do back-endové služby, pokud je zadán. | No |
http-response | Volitelně můžete určit podřízené zásady pro konfiguraci odpovědi HTTP překladače. Pokud není zadán, vrátí se odpověď jako nezpracovaný řetězec. | No |
elementy http-request
Poznámka:
S výjimkou případů, kdy je uvedeno, může být každý podřízený prvek určen najednou. Zadejte prvky v uvedeném pořadí.
Element (Prvek) | Popis | Povinní účastníci |
---|---|---|
get-authorization-context | Získá autorizační kontext pro požadavek HTTP překladače. | No |
set-back-end-service | Přesměruje požadavek HTTP překladače na zadaný back-end. | No |
include-fragment | Vloží fragment zásady do definice zásady. Pokud existuje více fragmentů, přidejte další include-fragment prvky. |
No |
set-method | Nastaví metodu požadavku HTTP překladače. | Ano |
set-url | Nastaví adresu URL požadavku HTTP překladače. | Ano |
set-header | Nastaví hlavičku v požadavku HTTP překladače. Pokud existuje více záhlaví, přidejte další header prvky. |
No |
set-body | Nastaví tělo v požadavku HTTP překladače. | No |
authentication-certificate | Ověřuje se pomocí klientského certifikátu v požadavku HTTP překladače. | No |
back-endový element
Element (Prvek) | Popis | Povinní účastníci |
---|---|---|
forward-request | Předá požadavek překladače HTTP nakonfigurované back-endové službě. | No |
elementy http-response
Poznámka:
S výjimkou případů, kdy je uvedeno, může být každý podřízený prvek určen najednou. Zadejte prvky v uvedeném pořadí.
Název | Popis | Povinní účastníci |
---|---|---|
set-body | Nastaví tělo v odpovědi HTTP překladače. | No |
xml-to-json | Transformuje odpověď HTTP překladače z XML na JSON. | No |
find-and-replace | Najde podřetězeč v odpovědi HTTP překladače a nahradí ho jiným podřetězecem. | No |
publish-event | Publikuje událost do jednoho nebo více odběrů zadaných ve schématu rozhraní GraphQL API. | No |
include-fragment | Vloží fragment zásady do definice zásady. Pokud existuje více fragmentů, přidejte další include-fragment prvky. |
No |
Využití
- Obory zásad: Překladač GraphQL
- Brány: Classic, v2, consumption
Poznámky k využití
- Informace o konfiguraci a správě překladače pomocí této zásady najdete v tématu Konfigurace překladače GraphQL.
- Tato zásada se vyvolá pouze při překladu jednoho pole v odpovídajícím typu operace GraphQL ve schématu.
Příklady
Překladač pro dotaz GraphQL
Následující příklad přeloží dotaz provedením volání HTTP GET
do back-endového zdroje dat.
Příklad schématu
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Ukázková zásada
<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>
Překladač pro dotaz GraphQL, který vrací seznam pomocí šablony Liquid
Následující příklad používá šablonu liquid, podporovanou pro použití v zásadách set-body , k vrácení seznamu v odpovědi HTTP na dotaz. Také přejmenuje username
pole v odpovědi z rozhraní REST API na name
v odpovědi GraphQL.
Příklad schématu
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Ukázková zásada
<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>
Resolver for GraphQL mutovat
Následující příklad vyřeší mutování, které vloží data tak, že odešle POST
požadavek na zdroj dat HTTP. Výraz zásady v set-body
zásadě požadavku HTTP upraví name
argument předaný v dotazu GraphQL jako jeho tělo. Text, který se odešle, bude vypadat jako následující JSON:
{
"name": "the-provided-name"
}
Příklad schématu
type Query {
users: [User]
}
type Mutation {
makeUser(name: String!): User
}
type User {
id: String!
name: String!
}
Ukázková zásada
<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>
Překladač pro sjednocovacího typu GraphQL
Následující příklad tento dotaz vyřeší orderById
tak, že provede volání HTTP GET
do back-endového zdroje dat a vrátí objekt JSON, který obsahuje ID a typ zákazníka. Typ zákazníka je sjednocení a RegisteredCustomer
GuestCustomer
typy.
Příklad schématu
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!
}
Ukázková zásada
V tomto příkladu napodobíme výsledky zákazníka z externího zdroje a pevně zakódujeme načtené výsledky v zásadách set-body
. Pole __typename
slouží k určení typu zákazníka.
<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>
Související zásady
Související obsah
Další informace o práci se zásadami najdete v tématech:
- Kurz: Transformace a ochrana rozhraní API
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Výrazy zásad
- Nastavení nebo úprava zásad
- Opakované použití konfigurací zásad
- Úložiště fragmentů zásad
- Sada nástrojů zásad služby Azure API Management
- Vytváření zásad pomocí Microsoft Copilotu v Azure