Zdieľať cez


Dotazovanie viacerých zdrojov údajov v rozhraní API služby Fabric pre GraphQL

Jednou z kľúčových výhod Fabric API pre GraphQL je možnosť sprístupniť viacero dátových zdrojov – ako sú jazerné domy, sklady a databázy – prostredníctvom jedného jednotného API endpointu. To znamená, že vaše aplikácie môžu získavať dáta z rôznych zdrojov v jednom GraphQL dotaze, čím sa eliminuje potreba samostatného pripájania k viacerým API alebo databázam.

Napríklad môžete mať údaje o zákazníkoch v jednom sklade a údaje o zásobách v inom dome pri jazere. Namiesto dvoch samostatných API volaní môžete dotazovať obe zdroje súčasne cez GraphQL API, čím znížite sieťovú záťaž a zjednodušíte aplikačný kód.

Ako fungujú viaczdrojové dotazy

Keď zadáte GraphQL dotaz, ktorý zahŕňa viacero dátových zdrojov, API automaticky rozdeľuje jednotlivé požiadavky do každého zdroja dát paralelne a potom výsledky spojí do jednej odpovede. Tento prístup:

  • Znižuje počet spiatočných ciest: Vaša aplikácia vykoná jednu požiadavku namiesto viacerých po sebe idúcich volaní
  • Zlepšuje výkon: Paralelné vykonávanie znamená rýchlejšie celkové reakčné časy
  • Zjednodušuje to klientsky kód: Pracujete s jedným API rozhraním bez ohľadu na to, kde sú dáta uložené

Important

Viaczdrojové dotazy majú nasledujúce obmedzenia:

  • Nemôžete vytvárať vzťahy medzi typmi, ktoré pokrývajú rôzne zdroje dát. Vzťahy fungujú len v rámci jedného dátového zdroja.
  • Individuálne požiadavky na každý zdroj dát sa vykonávajú paralelne bez garantovaného poradia.
  • Každá požiadavka na zdroj dát je nezávislá – neexistuje žiadna transakcia zahŕňajúca viacero zdrojov.

Príklad dotazu

Obchodný scenár: Predstavte si, že vytvárate dashboard, ktorý vedľa seba zobrazuje informácie o zákazníkoch a stav zásob produktov. Vaše zákaznícke dáta sú uložené v predajnom sklade (ContosoSales), zatiaľ čo vaše produktové zásoby sú spravované v samostatnom jazernom dome (ContosoInventory), ktorý je aktualizovaný vašimi dodávateľskými systémami. Bez podpory viacerých zdrojov by ste museli robiť dva samostatné API volania, spravovať dve rôzne pripojenia a sami kombinovať dáta vo svojom aplikačnom kóde.

S Fabric API pre GraphQL môžete získať dáta z oboch zdrojov v jednom dotaze:

query {
  customers (first: 1) {
    items {
      FirstName
      LastName
    }
  }
  inventories (first: 1) {
    items {
      Name
    }
  }
}

Táto jediná požiadavka získava záznamy o zákazníkoch zo zdroja dát ContosoSales a položky zásob zo zdroja dát ContosoInventory paralelne, pričom ich spája do jednej odpovede. Váš dashboard získa všetky potrebné dáta jedným API volaním namiesto dvoch.

Výstup žiadosti je:

{
  "data": {
    "customers": {
      "items": [
        {
          "FirstName": "Orlando",
          "LastName": "Gee"
        }
      ]
    },
    "inventories": {
      "items": [
        {
          "Name": "AWC Logo Cap"
        }
      ]
    }
  }
}

Štruktúra odpovedí zrkadlí štruktúru dotazu. Vo vnútri objektu data máte dve polia na vrchnej úrovni (customers a inventories), ktoré zodpovedajú dvom dotazom, ktoré ste vykonali. Každé pole obsahuje items pole s aktuálnymi výsledkami. Položky customers majú vlastnosti ako FirstName a LastName, zatiaľ čo inventories položky majú vlastnosti ako Name—presne tak, ako je požadované v dotaze.

Takto vyzerá zobrazenie dotazu pri spustení tejto požiadavky:

Snímka obrazovky editora zobrazujúca dotaz zahŕňajúci dva zdroje údajov.