Megosztás a következőn keresztül:


GraphQL-feloldó konfigurálása

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

Konfiguráljon egy feloldót egy GraphQL-sémában megadott objektumtípus GraphQL-mezőinek adatainak lekérésére vagy beállítására. A sémát GraphQL API-ként kell importálni az API Managementbe.

Feljegyzés

Ez a funkció jelenleg nem érhető el a munkaterületeken.

Az API Management jelenleg az alábbi adatforrásokhoz hozzáférő feloldókat támogatja:

Tudnivalók

  • A feloldó olyan erőforrás, amely olyan szabályzatdefiníciót tartalmaz, amelyet csak a séma egyező objektumtípusának és mezőjének végrehajtásakor hív meg.
  • Minden feloldó egyetlen mező adatait oldja fel. Több mező adatainak feloldásához mindegyikhez konfiguráljon külön feloldót.
  • A feloldó hatókörű szabályzatok kiértékelése a szabályzatvégrehajtási folyamat bármely inbound és backend szabályzata után történik. Nem öröklik a szabályzatokat más hatókörökből. További információ: Szabályzatok az API Managementben.
  • A GraphQL API api-hatókörű szabályzatait a feloldó hatókörű szabályzattól függetlenül konfigurálhatja. Adjon hozzá például egy validate-graphql-request szabályzatot a inbound hatókörhöz, amely ellenőrzi a kérést a feloldó meghívása előtt. Konfigurálja az API-hatókörű szabályzatokat az API-szabályzatok lapján.
  • A GraphQL-feloldók felületi és egyesítő típusainak támogatásához a háttérválasznak vagy már tartalmaznia kell a __typename mezőt, vagy módosítania kell a készlettörzs-szabályzattal a belefoglaláshoz__typename.

Előfeltételek

Feloldó létrehozása

Az alábbi lépések http-alapú adatforrás használatával hoznak létre egy feloldót. Az általános lépések hasonlóak a támogatott adatforrást használó feloldóhoz.

  1. Az Azure Portalon keresse meg az API Management-példányt.

  2. A bal oldali menüben válassza az API-kat , majd a GraphQL API nevét.

  3. A Séma lapon tekintse át egy olyan objektumtípus egyik mezőjének sémáját, amelyben konfigurálni szeretné a feloldót.

    1. Jelöljön ki egy mezőt, majd a bal margón vigye az egérmutatót.

    2. Válassza a +Feloldó hozzáadása lehetőséget.

      Képernyőkép egy feloldó hozzáadásáról a GraphQL-séma egyik mezőjéből a portálon.

  4. A Feloldó létrehozása lapon:

    1. Ha szeretné, frissítse a Név tulajdonságot, szükség esetén adjon meg egy leírást, és erősítse meg vagy frissítse a típus- és mezőkijelöléseket.
    2. Válassza ki a feloldó adatforrását. Ebben a példában válassza a HTTP API-t.
  5. A Resolver szabályzatszerkesztőjében frissítse a szabályzatot a http-data-source forgatókönyv gyermekelemeivel.

    1. Frissítse a szükséges http-request elemet szabályzatokkal a GraphQL-művelet HTTP-kéréssé alakításához.

    2. Igény szerint adjon hozzá egy http-response elemet, és adjon hozzá gyermekszabályzatokat a feloldó HTTP-válaszának átalakításához. Ha az http-response elem nincs megadva, a válasz nyers sztringként lesz visszaadva.

    3. Válassza a Létrehozás lehetőséget.

      Képernyőkép a feloldóházirend-szerkesztőről a portálon.

    A feloldó a mezőhöz van csatolva, és a Feloldók lapon jelenik meg.

    Képernyőkép a GraphQL API feloldók listájáról a portálon.

Feloldók kezelése

A GraphQL API feloldóinak listázása és kezelése az API Feloldók lapján.

Képernyőkép a GraphQL API feloldóinak a portálon való kezeléséről.

A Feloldók lapon:

  • A Csatolt oszlop azt jelzi, hogy a feloldó konfigurálva van-e a GraphQL-sémában jelenleg található mezőhöz. Ha a feloldó nincs összekapcsolva, nem hívható meg.

  • A feloldó helyi menüjében (...) keresse meg a feloldó klónozására, szerkesztésére vagy törlésére szolgáló parancsokat. Klónozhat egy felsorolt feloldót, hogy gyorsan létrehozhasson egy hasonló feloldót, amely egy másik típust és mezőt céloz meg.

  • Új feloldót a + Létrehozás lehetőség kiválasztásával hozhat létre.

Feloldó szerkesztése és tesztelése

Egyetlen feloldó szerkesztésekor megnyílik a Feloldó szerkesztése lap. A következőket teheti:

  • Frissítse a feloldó házirendet és opcionálisan az adatforrást. Az adatforrás módosítása felülírja az aktuális feloldószabályzatot.

  • Módosítsa a feloldó által célként megadott típust és mezőt.

  • A feloldó konfigurációjának tesztelése és hibakeresése. A feloldóházirend szerkesztésekor válassza a Futtatás teszt lehetőséget az adatforrás kimenetének ellenőrzéséhez, amelyet érvényesíthet a sémán. Hibák esetén a válasz hibaelhárítási információkat is tartalmaz.

    A feloldó portálon való szerkesztésének képernyőképe.

GraphQL-környezet

  • A feloldó kérésének és válaszának környezete (ha meg van adva) eltér az eredeti átjáró API-kérés környezetétől:
    • context.GraphQL a tulajdonságok az aktuális feloldóvégrehajtás argumentumára (Arguments) és szülőobjektumára (Parent) vannak állítva.
    • A kérelemkörnyezet a GraphQL-lekérdezés törzseként átadott argumentumokat tartalmaz.
    • A válaszkörnyezet a feloldó által küldött független hívás válasza, nem pedig az átjárókérés teljes válaszának környezete. A context kérelem- és válaszfolyamaton keresztül átadott változó a GraphQL-környezettel bővül, ha GraphQL-feloldóval használja.

kontextus. GraphQL.parent

Az context.GraphQL.parent aktuális feloldó végrehajtásához a szülőobjektum van beállítva. Vegye figyelembe a következő részleges sémát:

type Comment {
    id: ID!
    owner: string!
    content: string!
}

type Blog {
    id: ID!
    title: string!
    content: string!
    comments: [Comment]!
    comment(id: ID!): Comment
}

type Query {
    getBlog(): [Blog]!
    getBlog(id: ID!): Blog
}

Emellett fontolja meg egy GraphQL-lekérdezést egy adott blog összes információjára vonatkozóan:

query {
    getBlog(id: 1) {
        title
        content
        comments {
            id
            owner
            content
        }
    }
}

Ha a típusban beállít egy feloldót a comments Blog mezőhöz, tudnia kell, hogy melyik blogazonosítót használja. A blog context.GraphQL.Parent["id"] azonosítóját az alábbi feloldóban látható módon szerezheti be:

<http-data-source>
    <http-request>
        <set-method>GET</set-method>
        <set-url>@($"https://data.contoso.com/api/blog/{context.GraphQL.Parent["id"]}")
        </set-url>
    </http-request>
</http-data-source>

kontextus. GraphQL.Arguments

A paraméteres GraphQL-lekérdezés argumentumai hozzá lesznek adva a függvényhez context.GraphQL.Arguments. Vegyük például a következő két lekérdezést:

query($id: Int) {
    getComment(id: $id) {
        content
    }
}

query {
    getComment(id: 2) {
        content
    }
}

Ezek a lekérdezések a feloldó meghívásának getComment két módja. A GraphQL a következő JSON hasznos adatokat küldi el:

{
    "query": "query($id: Int) { getComment(id: $id) { content } }",
    "variables": { "id": 2 }
}

{
    "query": "query { getComment(id: 2) { content } }"
}

A feloldót az alábbiak szerint határozhatja meg:

<http-data-source>
    <http-request>
        <set-method>GET</set-method>
        <set-url>@($"https://data.contoso.com/api/comment/{context.GraphQL.Arguments["id"]}")</set-url>
    </http-request>
</http-data-source>

Következő lépések

További megoldási példákért lásd: