Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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-požadavek | 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. | Ne |
| http-odpověď | 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. | Ne |
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. | Ne |
| set-back-end-service | Přesměruje požadavek HTTP překladače na zadaný back-end. | Ne |
| include-fragment | Vloží fragment zásady do definice zásady. Pokud existuje více fragmentů, přidejte další include-fragment prvky. |
Ne |
| nastavení-metody | Nastaví metodu požadavku HTTP překladače. | Ano |
| set-url | Nastaví adresu URL požadavku HTTP překladače. | Ano |
| nastavit-záhlaví | Nastaví hlavičku v požadavku HTTP překladače. Pokud existuje více záhlaví, přidejte další header prvky. |
Ne |
| set-body | Nastaví tělo v požadavku HTTP překladače. | Ne |
| authentication-certificate | Ověřuje se pomocí klientského certifikátu v požadavku HTTP překladače. | Ne |
back-endový element
| Element (Prvek) | Popis | Povinní účastníci |
|---|---|---|
| forward-request | Předá požadavek překladače HTTP nakonfigurované back-endové službě. | Ne |
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. | Ne |
| xml-to-json | Transformuje odpověď HTTP překladače z XML na JSON. | Ne |
| find-and-replace | Najde podřetězeč v odpovědi HTTP překladače a nahradí ho jiným podřetězecem. | Ne |
| publish-event | Publikuje událost do jednoho nebo více odběrů zadaných ve schématu rozhraní GraphQL API. | Ne |
| include-fragment | Vloží fragment zásady do definice zásady. Pokud existuje více fragmentů, přidejte další include-fragment prvky. |
Ne |
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 RegisteredCustomerGuestCustomer 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
- Úložiště dětského hřiště zásad
- Sada nástrojů zásad služby Azure API Management
- Získejte asistenci Copilotu při vytváření, vysvětlování a řešení problémů se zásadami.