Dela via


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 Azure 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 -portalensöker du efter och väljer API Management-tjänster:

    Skärmbild som visar API Management-tjänster i sökresultaten.

  2. På sidan API Management Services väljer du din API Management-instans:

    Skärmbild som visar en API Management-instans på sidan API Management-tjänster.

Lägga till ett GraphQL-schema

  1. I den vänstra rutan, under API:er, väljer du API:er.

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

    Skärmbild av att välja GraphQL-panelen.

  3. I dialogrutan väljer du Fullständig och anger sedan värden i de obligatoriska fälten enligt beskrivningen i följande tabell.

    Skärmbild av schemasidan Skapa från GraphQL.

    Värde Beskrivning
    Visningsnamn Namnet som GraphQL-API:et ska visas med.
    Namn Rånamnet för GraphQL-API:et. Fylls i automatiskt när du skriver visningsnamnet.
    GraphQL-typ Välj Syntetisk GraphQL för 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 Välj ett schema 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. Standardvalet är HTTP(S).
    API URL-suffix Lägg till ett URL-suffix för att identifiera det specifika API:et i API Management-instansen. Måste vara unikt i API Management-instansen.
    Grundläggande URL Namnlös fält som visar din API-bas-URL.
    Taggar Du kan också 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? Markera kryssrutan för att tillämpa ett versionsschema på GraphQL-API:et.
  4. Välj Skapa.

  5. När API:et har skapats granskar eller ändrar du schemat på fliken Schema .

Konfigurera en lösning

Konfigurera en matchare för att mappa ett fält i schemat till en befintlig HTTP-slutpunkt. Övergripande steg finns här. Mer information finns i Konfigurera en GraphQL-matchare.

Anta att du har importerat följande grundläggande GraphQL-schema och vill konfigurera en lösning för users frågan.

type Query {
    users: [User]
}

type User {
    id: String!
    name: String!
}
  1. I den vänstra rutan, under API:er, väljer du API:er.

  2. Välj GraphQL-API:et.

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

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

    2. Välj Lägg till lösare.

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

  4. I fönstret Skapa lösning :

    1. Uppdatera egenskapen Namn om du vill, ange en Beskrivning, och bekräfta eller uppdatera Typ och Fält valen.
    2. I Datakälla väljer du HTTP API.
  5. I policyredigeraren för Resolver uppdaterar du elementet <http-data-source> med underordnade element för ditt scenario. Till exempel hämtar följande resolver users-fä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 hur du konfigurerar en princip i portalen.

  6. Välj Skapa.

  7. 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 annan lösning.

Tips

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 den vänstra rutan 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å menyn Namn .
    2. Ange värdet i rutan Värde .
    3. Lägg till fler rubriker genom att välja Lägg till rubrik.
    4. Ta bort rubriker med hjälp av papperskorgsknappen.
  6. Om du har lagt till en produkt i GraphQL-API:et lägger du till ett produktomfång under Tillämpa produktomfång.

  7. Gör något av följande i Frågeredigeraren:

    1. Välj minst ett fält eller underfält i listan på menyn till vänster om redigeraren. 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 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 testfrågesvaret.

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

  12. När du är klar med testningen 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.