Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik: minden API kezelési szintre
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:
- HTTP-alapú adatforrás (REST vagy SOAP API)
- Cosmos DB-adatbázis
- Azure SQL Database
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 és
inboundszabályzatabackendtörténik. Nem öröklik a szabályzatokat más hatókörökből. További információ: Szabályzatok az Azure API Managementben. - A GraphQL API API-hatókörű szabályzatait a feloldó-hatókörű szabályzatoktól függetlenül is konfigurálhatja. Adjon hozzá például egy validate-graphql-request szabályzatot a
inboundható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
__typenamemezőt, vagy a set-body szabályt használva kell módosítania azt, hogy tartalmazza__typename.
Előfeltételek
- Egy meglévő API Management-példány. Hozzon létre egyet, ha még nem.
- Átmenő vagy szintetikus GraphQL API importálása.
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.
Az Azure Portalon keresse meg az API Management-példányt.
A bal oldali menüben válassza az API-kat, majd válassza ki a GraphQL API nevét.
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.
Jelöljön ki egy mezőt, majd a bal margón vigye az egérmutatót.
Válassza a +Feloldó hozzáadása lehetőséget.
A Feloldó létrehozása lapon:
- 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.
- Válassza ki a feloldó adatforrását. Ebben a példában válassza a HTTP API-t.
A Resolver szabályzatszerkesztőjében frissítse a
http-data-sourceszabályzatot az ön forgatókönyvének gyermekelemeivel.Frissítse a szükséges
http-requestelemet szabályzatokkal a GraphQL-művelet HTTP-kéréssé alakításához.Igény szerint adjon hozzá egy
http-responseelemet, és szükség esetén adjon hozzá al-szabályzatokat a feloldó HTTP-válaszának átalakításához. Ha azhttp-responseelem nincs megadva, a válasz nyers sztringként lesz visszaadva.Válassza a Létrehozás lehetőséget.
A feloldó a mezőhöz van csatolva, és a Feloldók lapon jelenik meg.
Feloldók kezelése
Az API Feloldók lapján listázhatja és kezelheti a GraphQL API feloldóit.
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 hozhat létre a + Létrehozás lehetőség kiválasztásával.
Megoldó szerkesztése és tesztelése
Egy feloldó szerkesztésekor megnyílik a Feloldó szerkesztése oldal. A következőket teheti:
Frissítse a feloldó házirendet, és az adatforrást is, ha szükséges. 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 Teszt futtatása 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.
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.GraphQLa 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
contextváltozó, amelyet a kérelem- és válaszfolyamat során adnak át, kiegészül a GraphQL-környezettel, amikor GraphQL-feloldóval használják.
-
kontextus.GraphQL.parent
Az context.GraphQL.parent a szülő objektumra van beállítva a jelenlegi feloldó végrehajtásához. 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 beállít egy feloldót a comments mezőhöz a Blog típusban, meg kell értenie, hogy melyik blogazonosítót használja. A blogazonosítót context.GraphQL.Parent["id"] az alábbi megoldásban látható módon kaphatja meg:
<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
}
}
Két módja van annak, hogy meghívjuk a getComment feloldót. 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>
Kapcsolódó tartalom
További megoldási példákért lásd: