Sdílet prostřednictvím


Konfigurace překladače GraphQL

PLATÍ PRO: Všechny úrovně služby API Management

Nakonfigurujte překladač pro načtení nebo nastavení dat pro pole GraphQL v typu objektu určeném ve schématu GraphQL. Schéma se musí importovat do služby API Management jako rozhraní GraphQL API.

Api Management v současné době podporuje překladače, které mají přístup k následujícím zdrojům dat:

Co je třeba vědět

  • Překladač je prostředek obsahující definici zásady, která se vyvolá pouze v případě, že se spustí odpovídající typ objektu a pole ve schématu.
  • Každý překladač vyřeší data pro jedno pole. Pokud chcete přeložit data pro více polí, nakonfigurujte pro každou z nich samostatný překladač.
  • Zásady s oborem překladače se vyhodnocují po všech inbound zásadách backend v kanálu spouštění zásad. Nedědí zásady z jiných oborů. Další informace najdete v tématu Zásady ve službě API Management.
  • Zásady vymezené rozhraním API můžete nakonfigurovat pro rozhraní GraphQL API nezávisle na zásadách s oborem překladače. Přidejte například do oboru zásadu inbound validate-graphql-request, která před vyvolání překladače ověří požadavek. Nakonfigurujte zásady vymezené rozhraním API na kartě Zásady rozhraní API pro rozhraní API.
  • Aby bylo možné podporovat rozhraní a sjednocovací typy v překladači GraphQL, musí back-endová odpověď buď pole obsahovat__typename, nebo musí být změněna pomocí zásad pro nastavení textu, které chcete zahrnout __typename.

Požadavky

Vytvoření překladače

Následující postup vytvoří překladač pomocí zdroje dat založeného na protokolu HTTP. Obecné kroky jsou podobné pro jakýkoli překladač, který používá podporovaný zdroj dat.

  1. Na webu Azure Portal přejděte k vaší instanci služby API Management.

  2. V nabídce vlevo vyberte rozhraní API a pak název rozhraní GraphQL API.

  3. Na kartě Schéma zkontrolujte schéma pole v typu objektu, ve kterém chcete nakonfigurovat překladač.

    1. Vyberte pole a potom na levém okraji najeďte myší.

    2. Vyberte + Přidat překladač.

      Snímek obrazovky s přidáním překladače z pole ve schématu GraphQL na portálu

  4. Na stránce Vytvořit překladač:

    1. Pokud chcete, aktualizujte vlastnost Název, volitelně zadejte popis a potvrďte nebo aktualizujte výběry typu a pole.
    2. Vyberte zdroj dat překladače. V tomto příkladu vyberte rozhraní HTTP API.
  5. V editoru zásad Resolver aktualizujte zásadu http-data-source podřízenými elementy pro váš scénář.

    1. Aktualizujte požadovaný http-request prvek pomocí zásad pro transformaci operace GraphQL na požadavek HTTP.

    2. Volitelně přidejte http-response prvek a přidejte podřízené zásady pro transformaci odpovědi HTTP překladače. Pokud není http-response zadaný prvek, vrátí se odpověď jako nezpracovaný řetězec.

    3. Vyberte Vytvořit.

      Snímek obrazovky s editorem zásad překladače na portálu

    Překladač je připojený k poli a zobrazí se na kartě Překladače .

    Snímek obrazovky se seznamem překladačů pro rozhraní GraphQL API na portálu

Správa překladačů

Seznam a správa překladačů pro rozhraní GraphQL API na kartě Překladače rozhraní API

Snímek obrazovky správy překladačů pro rozhraní GraphQL API na portálu

Na kartě Překladače :

  • Propojený sloupec označuje, jestli je překladač nakonfigurovaný pro pole, které je aktuálně ve schématu GraphQL. Pokud překladač není propojený, nejde ho vyvolat.

  • V místní nabídce (...) pro překladač najděte příkazy pro klonování, úpravy nebo odstranění překladače. Naklonujte uvedený překladač a rychle vytvořte podobný překladač, který cílí na jiný typ a pole.

  • Nový překladač můžete vytvořit tak , že vyberete + Vytvořit.

Úprava a otestování překladače

Při úpravě jednoho překladače se otevře stránka Upravit překladač . Můžete provádět následující akce:

  • Aktualizujte zásady překladače a volitelně i zdroj dat. Změna zdroje dat přepíše aktuální zásady překladače.

  • Změňte typ a pole, na které cílí překladač.

  • Otestujte a laďte konfiguraci překladače. Při úpravě zásad překladače vyberte Spustit test a zkontrolujte výstup ze zdroje dat, který můžete ověřit ve schématu. Pokud dojde k chybám, odpověď obsahuje informace o řešení potíží.

    Snímek obrazovky s úpravou překladače na portálu

Kontext GraphQL

  • Kontext požadavku a odpovědi překladače (pokud je zadaný) se liší od kontextu původního požadavku rozhraní API brány:
    • context.GraphQL Vlastnosti jsou nastaveny na argumenty (Arguments) a nadřazený objekt (Parent) pro aktuální provádění překladače.
    • Kontext požadavku obsahuje argumenty předávané v dotazu GraphQL jako jeho tělo.
    • Kontext odpovědi je odpověď z nezávislého volání provedeného překladačem, nikoli kontextu pro úplnou odpověď požadavku brány. Proměnná context , která se předává prostřednictvím kanálu požadavku a odpovědi, je rozšířena o kontext GraphQL při použití s překladačem GraphQL.

Kontextu. GraphQL.parent

Objekt context.GraphQL.parent je nastaven na nadřazený objekt pro aktuální spuštění překladače. Zvažte následující částečné schéma:

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
}

Zvažte také dotaz GraphQL pro všechny informace pro konkrétní blog:

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

Pokud pro pole v Blog typu nastavíte překladačcomments, budete chtít zjistit, jaké ID blogu použít. ID blogu můžete získat pomocí context.GraphQL.Parent["id"] následujícího překladače:

<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>

Kontextu. GraphQL.Arguments

Do parametrizovaného dotazu GraphQL se přidají context.GraphQL.Argumentsargumenty parametrizovaného dotazu GraphQL. Představte si například následující dva dotazy:

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

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

Tyto dotazy představují dva způsoby volání překladače getComment . GraphQL odešle následující datovou část JSON:

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

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

Překladač můžete definovat následujícím způsobem:

<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>

Další kroky

Další příklady překladače najdete tady: