Lägga till ett syntetiskt GraphQL-API och konfigurera fältlösare

GÄLLER FÖR: Alla API Management-nivåer

I API Management kan du lägga till ett GraphQL-API i någon av två modeller: direkt till en befintlig GraphQL-slutpunkt eller importera ett GraphQL-schema och skapa ett syntetiskt GraphQL-API med anpassade fältlösare. Mer information finns i GraphQL-översikten.

Kommentar

För närvarande är den här funktionen inte tillgänglig på arbetsytor.

I den här artikeln ska du:

  • Importera ett GraphQL-schema till din API Management-instans
  • Konfigurera en lösning för en GraphQL-fråga med hjälp av en befintlig HTTP-slutpunkt
  • Testa GraphQL-API:et

Om du vill exponera en befintlig GraphQL-slutpunkt som ett API kan du läsa Importera ett GraphQL-API.

Förutsättningar

  • En befintlig API Management-instans. Skapa en om du inte redan har gjort det.
  • En giltig GraphQL-schemafil med .graphql tillägget.
  • En GraphQL-slutpunkt för serverdelen är valfri för det här scenariot.

Gå till API Management-instansen

  1. I Azure-portalen söker du efter och väljer API Management-tjänster.

    Välj API Management-tjänster

  2. På sidan API Management-tjänster väljer du din API Management-instans.

    Välj din API Management-instans

Lägga till ett GraphQL-schema

  1. I sidonavigeringsmenyn går du till avsnittet API:er och väljer API:er.

  2. Under Definiera ett nytt API väljer du GraphQL-ikonen .

    Skärmbild av att välja GraphQL-ikonen i listan över API:er.

  3. I dialogrutan väljer du Fullständig och slutför de obligatoriska formulärfälten.

    Skärmbild av fält för att skapa ett GraphQL-API.

    Fält Description
    Visningsnamn Namnet som GraphQL-API:et ska visas med.
    Namn Raw-namnet på GraphQL-API:et. Fylls i automatiskt när du skriver visningsnamnet.
    GraphQL-typ Välj Syntetisk GraphQL att importera från en GraphQL-schemafil.
    Återställningspunkt för GraphQL-slutpunkt Du kan också ange en URL med ett GraphQL API-slutpunktsnamn. API Management skickar GraphQL-frågor till den här slutpunkten när en anpassad matchare inte har angetts för ett fält.
    Beskrivning Lägg till en beskrivning av ditt API.
    URL-schema Gör ett val baserat på GraphQL-slutpunkten. Välj ett av alternativen som innehåller ett WebSocket-schema (WS eller WSS) om GraphQL-API:et innehåller prenumerationstypen. Standardval: HTTP(S).
    API URL-suffix Lägg till ett URL-suffix för att identifiera det här specifika API:et i den här API Management-instansen. Den måste vara unik i den här API Management-instansen.
    Grundläggande URL Namnlös fält som visar din API-bas-URL
    Taggar Associera GraphQL-API:et med nya eller befintliga taggar.
    Produkter Associera GraphQL-API:et med en produkt för att publicera det.
    Version av det här API:et? Välj om du vill tillämpa ett versionsschema på GraphQL-API:et.
  4. Välj Skapa.

  5. När API:et har skapats bläddrar eller ändrar du schemat på fliken Design .

Konfigurera matchare

Konfigurera en matchare för att mappa ett fält i schemat till en befintlig HTTP-slutpunkt. Steg på hög nivå finns här. Mer information finns i Konfigurera en GraphQL-matchare.

Anta att du importerade följande grundläggande GraphQL-schema och ville konfigurera en lösning för användarfrågan .

type Query {
    users: [User]
}

type User {
    id: String!
    name: String!
}
  1. I sidonavigeringsmenyn går du till avsnittet API:er och väljer API:er> som ditt GraphQL-API.

  2. På fliken Schema granskar du schemat för ett fält i en objekttyp där du vill konfigurera en matchare.

    1. Välj ett fält och hovra sedan pekaren i vänstermarginalen.

    2. Välj + Lägg till matchare

      Skärmbild av att lägga till en GraphQL-matchare i portalen.

  3. På sidan Skapa lösning :

    1. Uppdatera egenskapen Namn om du vill, om du vill, ange en Beskrivning och bekräfta eller uppdatera markeringen Typ och Fält.
    2. I Datakälla väljer du HTTP API.
  4. I policyredigeraren för Resolver uppdaterar du elementet <http-data-source> med underordnade element för ditt scenario. Följande matchare hämtar till exempel användarfältet genom att göra ett GET anrop till en befintlig HTTP-datakälla.

        <http-data-source>
            <http-request>
                <set-method>GET</set-method>
                <set-url>https://myapi.contoso.com/users</set-url>
            </http-request>
        </http-data-source>
    

    Skärmbild av konfiguration av matchningsprincip i portalen.

  5. Välj Skapa.

  6. Om du vill lösa data för ett annat fält i schemat upprepar du föregående steg för att skapa en lösning.

Dricks

När du redigerar en matchningsprincip väljer du Kör test för att kontrollera utdata från datakällan, som du kan verifiera mot schemat. Om fel inträffar innehåller svaret felsökningsinformation.

Testa GraphQL-API:et

  1. Gå till din API Management-instans.

  2. I sidonavigeringsmenyn går du till avsnittet API:er och väljer API:er.

  3. Under Alla API:er väljer du ditt GraphQL-API.

  4. Välj fliken Test för att komma åt testkonsolen.

  5. Under Rubriker:

    1. Välj rubriken på den nedrullningsbara menyn Namn .
    2. Ange värdet i fältet Värde .
    3. Lägg till fler rubriker genom att välja + Lägg till rubrik.
    4. Ta bort rubriker med hjälp av papperskorgsikonen.
  6. Om du har lagt till en produkt i GraphQL-API:et använder du produktomfånget under Tillämpa produktomfång.

  7. Under Frågeredigeraren:

    1. Välj minst ett fält eller underfält i listan på sidomenyn. Fälten och underfälten som du väljer visas i frågeredigeraren.

    2. Börja skriva i frågeredigeraren för att skriva en fråga.

      Skärmbild av att lägga till fält i frågeredigeraren.

  8. Under Frågevariabler lägger du till variabler för att återanvända samma fråga eller mutation och skicka olika värden.

  9. Välj Skicka.

  10. Visa svaret.

    Skärmbild av att visa testfrågesvaret.

  11. Upprepa föregående steg för att testa olika nyttolaster.

  12. När testningen är klar avslutar du testkonsolen.

Skydda GraphQL-API:et

Skydda GraphQL-API:et genom att använda både befintliga autentiserings- och auktoriseringsprinciper och en GraphQL-valideringsprincip för att skydda mot GraphQL-specifika attacker.

Nästa steg