HTTP-adatforrás egy feloldóhoz
A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint
A http-data-source
feloldó házirend konfigurálja a HTTP-kérést és opcionálisan a HTTP-választ a GraphQL-sémák objektumtípusának és mezőjének adatainak feloldásához. A sémát GraphQL API-ként kell importálni az API Managementbe.
Feljegyzés
Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.
Szabályzatutasítás
<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>
Elemek
Név | Leírás | Kötelező |
---|---|---|
http-request | Megad egy URL-címet és egy gyermekszabályzatot a feloldó HTTP-kérésének konfigurálásához. | Igen |
háttér | Igény szerint továbbítja a feloldó HTTP-kérését egy háttérszolgáltatásnak, ha meg van adva. | Nem |
http-response | Igény szerint gyermekszabályzatokat ad meg a feloldó HTTP-válaszának konfigurálásához. Ha nincs megadva, a válasz nyers sztringként lesz visszaadva. | Nem |
http-request elements
Feljegyzés
A feljegyzett esetek kivételével az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.
Elem | Leírás | Kötelező |
---|---|---|
get-authorization-context | Lekéri a feloldó HTTP-kérésének engedélyezési környezetét. | Nem |
set-backend-service | Átirányítja a feloldó HTTP-kérését a megadott háttérrendszerre. | Nem |
include-fragment | Szabályzattöredék beszúrása a szabályzatdefinícióba. Ha több töredék is van, adjon hozzá további include-fragment elemeket. |
Nem |
set-method | Beállítja a feloldó HTTP-kérésének metódusát. | Igen |
set-url | Beállítja a feloldó HTTP-kérésének URL-címét. | Igen |
set-header | Beállít egy fejlécet a feloldó HTTP-kérésében. Ha több fejléc is van, adjon hozzá további header elemeket. |
Nem |
set-body | Beállítja a törzset a feloldó HTTP-kérésében. | Nem |
hitelesítés-tanúsítvány | Hitelesítés ügyféltanúsítvány használatával a feloldó HTTP-kérésében. | Nem |
háttérelem
Elem | Leírás | Kötelező |
---|---|---|
továbbítási kérés | Továbbítja a feloldó HTTP-kérését egy konfigurált háttérszolgáltatásnak. | Nem |
http-response elemek
Feljegyzés
A feljegyzett esetek kivételével az egyes gyermekelemek legfeljebb egyszer adhatók meg. Adja meg a felsorolt sorrend elemeit.
Név | Leírás | Kötelező |
---|---|---|
set-body | Beállítja a törzset a feloldó HTTP-válaszában. | Nem |
xml-to-json | Átalakítja a feloldó HTTP-válaszát XML-ről JSON-ra. | Nem |
keresés és csere | Megkeres egy alsztringet a feloldó HTTP-válaszában, és egy másik részstringre cseréli. | Nem |
közzétételi esemény | Esemény közzététele a GraphQL API-sémában megadott egy vagy több előfizetésben. | Nem |
include-fragment | Szabályzattöredék beszúrása a szabályzatdefinícióba. Ha több töredék is van, adjon hozzá további include-fragment elemeket. |
Nem |
Használat
- Szabályzat hatókörei: GraphQL-feloldó
- Átjárók: klasszikus, v2, használat
Használati megjegyzések
- A feloldó ezzel a szabályzattal történő konfigurálásához és kezeléséhez lásd : GraphQL-feloldó konfigurálása.
- Ez a szabályzat csak akkor lesz meghívva, ha a séma egyező GraphQL-művelettípusának egyetlen mezőjét oldja fel.
Példák
GraphQL-lekérdezés feloldója
Az alábbi példa egy háttéradatforrásra irányuló HTTP-hívással GET
oldja fel a lekérdezést.
Példaséma
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Példaházirend
<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>
Likvid sablont használó listát visszaadó GraphQL-lekérdezés feloldója
Az alábbi példa egy likvid sablont használ, amelyet a készletházirend támogat a HTTP-válasz egy lekérdezésre adott listájának visszaadásához. Emellett átnevezi a username
REST API-ból a válasz mezőjét a GraphQL-válaszba name
.
Példaséma
type Query {
users: [User]
}
type User {
id: String!
name: String!
}
Példaházirend
<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>
A GraphQL-mutáció feloldója
Az alábbi példa egy olyan mutációt old fel, amely egy HTTP-adatforrásra irányuló kéréssel POST
szúr be adatokat. A HTTP-kérés szabályzatában szereplő set-body
szabályzatkifejezés módosít egy name
argumentumot, amelyet a GraphQL-lekérdezés a törzseként ad át. Az elküldött törzs a következő JSON-hoz hasonlóan fog kinézni:
{
"name": "the-provided-name"
}
Példaséma
type Query {
users: [User]
}
type Mutation {
makeUser(name: String!): User
}
type User {
id: String!
name: String!
}
Példaházirend
<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>
A GraphQL-egyesítési típus feloldója
Az alábbi példa úgy oldja fel a orderById
lekérdezést, hogy HTTP-hívást GET
indít egy háttérbeli adatforráshoz, és visszaad egy JSON-objektumot, amely tartalmazza az ügyfélazonosítót és -típust. Az ügyfél típusa az egyesítő RegisteredCustomer
és GuestCustomer
típusok.
Példaséma
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!
}
Példaházirend
Ebben a példában egy külső forrásból kigúnyoljuk az ügyfél eredményeit, és keményen kódoljuk a lekért eredményeket a set-body
szabályzatban. A __typename
mező az ügyfél típusának meghatározására szolgál.
<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>
Kapcsolódó szabályzatok
Kapcsolódó tartalom
A szabályzatok használatával kapcsolatos további információkért lásd:
- Oktatóanyag: AZ API átalakítása és védelme
- Szabályzathivatkozás a szabályzatutasságok és azok beállításainak teljes listájához
- Házirend-kifejezések
- Házirendek beállítása vagy szerkesztése
- Szabályzatkonfigurációk újrafelhasználása
- Szabályzatrészletek adattára
- Azure API Management policy toolkit
- Szabályzatok létrehozása a Microsoft Copilot használatával az Azure-ban