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


GraphQL-kérés érvényesítése

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

A validate-graphql-request szabályzat ellenőrzi a GraphQL-kérést, és engedélyezi a hozzáférést egy GraphQL API adott lekérdezési útvonalaihoz. Az érvénytelen lekérdezés "kérelemhiba". Az engedélyezés csak érvényes kérelmek esetén történik.

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

<validate-graphql-request error-variable-name="variable name" max-size="size in bytes" max-depth="query depth">
    <authorize>
        <rule path="query path, for example: '/listUsers' or '/__*'" action="string or policy expression that evaluates to 'allow | remove | reject | ignore'" />
    </authorize>
</validate-graphql-request>

Attribútumok

Attribútum Leírás Kötelező Alapértelmezett
error-variable-name Annak a változónak a neve, amelybe context.Variables naplózni szeretné az érvényesítési hibákat. A szabályzatkifejezések engedélyezettek. Nem N.A.
maximális méret A kérelem hasznos adatainak maximális mérete bájtban. Megengedett maximális érték: 102 400 bájt (100 KB). (Ha növelni szeretné ezt a korlátot, forduljon az ügyfélszolgálathoz .) A szabályzatkifejezések engedélyezettek. Igen n/a
maximális mélység Egész szám. Lekérdezési mélység maximális száma. A szabályzatkifejezések engedélyezettek. Nem 6

Elemek

Név Leírás Kötelező
engedélyez Adja hozzá ezt az elemet egy vagy több elérési út megfelelő engedélyezési szabályának beállításához. Nem
szabály Adjon hozzá egy vagy több elemet adott lekérdezési útvonalak engedélyezéséhez. Minden szabály megadhat egy másik műveletet. Feltételesen megadható egy szabályzatkifejezés használatával. Nem

szabályattribútumok

Attribútum Leírás Kötelező Alapértelmezett
ösvény Az engedélyezési ellenőrzés végrehajtásának elérési útja. A következő mintát kell követnie: /type/field. Igen n/a
művelet A szabály alkalmazása esetén végrehajtandó művelet . Feltételesen megadható egy szabályzatkifejezés használatával. Nem enged

Bevezetési rendszer

A path=/__* házirendje az introspection rendszer. Ezzel elutasíthatja az introspection-kérelmeket (__schemastb __type.).

Kérelemműveletek

Az elérhető műveleteket az alábbi táblázat ismerteti.

Művelet Leírás
elutasít Kéréshiba történik, és a rendszer nem küldi el a kérést a háttérrendszernek. Ha konfigurálva van, további szabályok nincsenek alkalmazva.
eltávolít Mezőhiba történik, és a mező el lesz távolítva a kérelemből.
enged A mező a háttérrendszernek lesz átadva.
semmibe vesz A szabály érvénytelen ebben az esetben, és a következő szabály lesz alkalmazva.

Használat

Használati megjegyzések

  • Konfigurálja a szabályzatot az API Managementbe importált átmenő vagy szintetikus GraphQL API-hoz.

  • Ez a szabályzat csak egyszer használható egy szabályzatszakaszban.

  • Mivel a GraphQL-lekérdezések egy lapított sémát használnak, az engedélyek bármely kimeneti típusú levélcsomóponton alkalmazhatók:

    • Mutáció, lekérdezés vagy előfizetés
    • Egyéni mező egy típusdeklarációban

    Előfordulhat, hogy az engedélyek nem alkalmazhatók a következőre:

    • Bemeneti típusok
    • Töredékek
    • Szakszervezetek
    • Interfészek
    • A sémaelem

Hibakezelés

A GraphQL-sémán vagy a kérelem méretének vagy mélységének sikertelen ellenőrzése kéréshiba, és azt eredményezi, hogy a kérés hibablokkdal (de adatblokk nélkül) meghiúsult.

A tulajdonsághoz hasonlóan az Context.LastError összes GraphQL-ellenőrzési hiba automatikusan propagálódik a GraphQLErrors változóban. Ha a hibákat külön kell propagálja, megadhat egy hibaváltozó nevét. A rendszer a hibákat a változóra és a error változóra küldi GraphQLErrors .

Példák

Lekérdezés érvényesítése

Ez a példa a következő ellenőrzési és engedélyezési szabályokat alkalmazza egy GraphQL-lekérdezésre:

  • A 100 kb-nál nagyobb vagy 4-nél nagyobb lekérdezési mélységű kérelmek elutasításra kerülnek.
  • A rendszer elutasítja az introspection rendszerre irányuló kérelmeket.
  • A /Missions/name mező el lesz távolítva a kétnál több fejlécet tartalmazó kérelmekből.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4"> 
    <authorize>
        <rule path="/__*" action="reject" /> 
        <rule path="/Missions/name" action="@(context.Request.Headers.Count > 2 ? "remove" : "allow")" />
    </authorize>
</validate-graphql-request> 

Mutáció ellenőrzése

Ez a példa a következő ellenőrzési és engedélyezési szabályokat alkalmazza a GraphQL-mutációra:

  • A 100 kb-nál nagyobb vagy 4-nél nagyobb lekérdezési mélységű kérelmek elutasításra kerülnek.
  • A mezőmutációra vonatkozó kéréseket a deleteUser rendszer megtagadja, kivéve, ha a kérelem IP-címről 198.51.100.1származik.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4"> 
    <authorize>
        <rule path="/Mutation/deleteUser" action="@(context.Request.IpAddress <> "198.51.100.1" ? "deny" : "allow")" />
    </authorize>
</validate-graphql-request> 

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