Share via


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

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ó GraqhQL-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>

A szabályzatok használatával kapcsolatos további információkért lásd: