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


GraphQL-végpontok gazdagépe a Data API Builderben

A GraphQL-en keresztül elérhető entitások az alapértelmezett elérési úton érhetők el: https://{base_url}//graphql. A Data API Builder automatikusan létrehoz egy GraphQL-sémát az összes konfigurált entitás lekérdezési és mutációs mezőivel. A GraphQL-séma egy modern GraphQL-ügyféllel vizsgálható meg, amely olyan funkciókat tartalmaz, mint az automatikus kiegészítés.

Ha követte a Első lépések példát, ahol a GraphQL-hozzáféréshez konfigurált books és authors entitás van konfigurálva, láthatja, milyen egyszerű a GraphQL használata.

Eredményhalmaz formátuma

A visszaadott eredmény egy ilyen formátumú JSON-objektum:

{
    "data": {}    
}

Jegyzet

Alapértelmezés szerint csak az első 100 elem lesz visszaadva.

Támogatott gyökértípusok

A Data API Builder a következő GraphQL-gyökértípusokat támogatja:

lekérdezésekmutációk

Lekérdezések

Minden entitás támogatja a következő műveleteket:

A Data API Builder , hacsak másként nem adja meg, az entitás egyedi nevét használja, amikor a lekérdezés várhatóan egyetlen elemet ad vissza. Ezzel szemben a Data API builder egy entitás többes számú nevét használja, amikor a lekérdezés várhatóan egy elemlistát ad vissza. Az book entitás például a következő:

  • book_by_pk(): nulla vagy egy entitás visszaadásához
  • books(): nulla vagy több entitás listájának visszaadása

Tördelés

Minden olyan lekérdezéstípus, amely nullát vagy több elemet ad vissza, támogatja a lapozást:

{
  books
  {
    items {
      title
    }
    hasNextPage
    endCursor
  }
}
  • az item objektum lehetővé teszi az entitásmezők elérését
  • hasNextPage igaz értékre van állítva, ha több elemet kell visszaadni
  • endCursor egy átlátszatlan kurzorsztringet ad vissza, amely first és after lekérdezési paraméterekkel használható az elemek következő készletének (vagy oldalának) lekéréséhez.

Lekérdezés elsődleges kulcs szerint

Minden entitás támogatja egy adott elem lekérését az elsődleges kulcsán keresztül, a következő lekérdezési formátum használatával:

<entity>_by_pk(<pk_colum>:<pk_value>)
{
    <fields>
}

Például:

{
  book_by_pk(id:1010) {
    title
  }
}

Általános lekérdezés

Minden entitás egy általános lekérdezési mintát is támogat, így csak a kívánt elemeket kérheti le a kívánt sorrendben a következő paraméterekkel:

  • filter: szűri a visszaadott elemeket
  • orderBy: meghatározza a visszaadott adatok rendezésének módját
  • first és after: csak a felső n elemeket adja vissza

Például:

{
  authors(
    filter: {
        or: [
          { first_name: { eq: "Isaac" } }
          { last_name: { eq: "Asimov" } }
        ]
    }
  ) {
    items {
      first_name
      last_name
      books(orderBy: { year: ASC }) {
        items {
          title
          year
        }
      }
    }
  }
}

filter

A filter paraméter értéke predikátumkifejezés (logikai értéket visszaadó kifejezés) az entitás mezőivel. A válasz csak azokat az elemeket tartalmazza, amelyekben a kifejezés "True" értéket ad vissza. Például:

{
  books(filter: { title: { contains: "Foundation" } })
  {
    items {
      id
      title
      authors {
        items {
          first_name
          last_name
        }
      }
    }
  }
}

Ez a lekérdezés az összes olyan könyvet visszaadja, amelyben a címben Foundation szó szerepel.

A filter paraméter által támogatott operátorok a következők:

Operátor Típus Leírás Példa
eq Összehasonlítás Egyenlő books(filter: { title: { eq: "Foundation" } })
neq Összehasonlítás Nem egyenlő books(filter: { title: { neq: "Foundation" } })
gt Összehasonlítás Nagyobb, mint books(filter: { year: { gt: 1990 } })
gte Összehasonlítás Nagyobb vagy egyenlő books(filter: { year: { gte: 1990 } })
lt Összehasonlítás Kisebb, mint books(filter: { year: { lt: 1990 } })
lte Összehasonlítás Kisebb vagy egyenlő books(filter: { year: { lte: 1990 } })
isNull Összehasonlítás Null értékű books(filter: { year: { isNull: true} })
contains Húr Tartalmaz books(filter: { title: { contains: "Foundation" } })
notContains Húr Nem tartalmaz books(filter: { title: { notContains: "Foundation" } })
startsWith Húr A következővel kezdődik: books(filter: { title: { startsWith: "Foundation" } })
endsWith Húr Befejezés: books(filter: { title: { endsWith: "Empire" } })
and Logikus Logikai és authors(filter: { and: [ { first_name: { eq: "Robert" } } { last_name: { eq: "Heinlein" } } ] })
or Logikus Logikai vagy authors(filter: { or: [ { first_name: { eq: "Isaac" } } { first_name: { eq: "Dan" } } ] })

orderBy

A orderby értéke adja meg az eredményhalmaz elemeinek visszaadásának sorrendjét. Például:

{
  books(orderBy: {title: ASC} )
  {
    items {
      id
      title
    }
  }
}

Ez a lekérdezés a titleáltal rendezett könyveket adja vissza.

first és after

A first paraméter korlátozza a visszaadott elemek számát. Például:

query {
  books(first: 5)
  {
    items {
      id
      title
    }
    hasNextPage
    endCursor
  }
}

Ez a lekérdezés az első öt könyvet adja vissza. Ha nincs megadva orderBy, a rendszer a mögöttes elsődleges kulcs alapján rendezi az elemeket. A orderBy megadott értéknek pozitív egész számnak kell lennie.

Ha a book entitásban több elem található, mint a firstkeresztül kért entitások, a hasNextPage mező kiértékelése truelesz, a endCursor pedig egy sztringet ad vissza, amely a after paraméterrel használható a következő elemek eléréséhez. Például:

query {
  books(first: 5, after: "W3siVmFsdWUiOjEwMDQsIkRpcmVjdGlvbiI6MCwiVGFibGVTY2hlbWEiOiIiLCJUYWJsZU5hbWUiOiIiLCJDb2x1bW5OYW1lIjoiaWQifV0=")
  {
    items {
      id
      title
    }
    hasNextPage
    endCursor
  }
}

Mutációk

Minden entitás esetében a létrehozási, frissítési és törlési műveleteket támogató mutációk automatikusan létrejönnek. A mutációs művelet a következő névmintával jön létre: <operation><entity>. A book entitás esetében például a mutációk a következőek:

  • createbook: új könyv létrehozása
  • updatebook: meglévő könyv frissítése
  • deletebook: a megadott könyv törlése

Alkot

A kívánt entitás új elemének létrehozásához meg kell adni a create<entity> mutációt. A létrehozott mutációhoz meg kell adni az item paramétert, amelyben meg kell adni az entitás kötelező mezőinek értékeit az új elem létrehozásakor.

create<entity>(item: <entity_fields>)
{
    <fields>
}

Például:

mutation {
  createbook(item: {
    id: 2000,
    title: "Leviathan Wakes"    
  }) {
    id
    title
  }  
}

Frissít

A kívánt entitás egy elemének frissítéséhez meg kell adni a update<entity> mutációt. A frissítésmutációhoz két paraméter szükséges:

  • <primary_key>az elsődleges kulcsoszlopok és a kapcsolódó értékek kulcs-érték listája a frissítendő elem azonosításához
  • item: az entitás kötelező mezőértékeivel rendelkező paraméter, amelyet a megadott elem frissítésekor kell használni
update<entity>(<pk_colum>:<pk_value>, [<pk_colum>:<pk_value> ... <pk_colum>:<pk_value>,] item: <entity_fields>)
{
    <fields>
}

Például:

mutation {
  updatebook(id: 2000, item: {
    year: 2011,
    pages: 577    
  }) {
    id
    title
    year
    pages
  }
}

Töröl

A kívánt entitás egy elemének törléséhez meg kell adni a delete<entity> mutációt. A törölni kívánt elem elsődleges kulcsa a szükséges paraméter.

delete<entity>(<pk_colum>:<pk_value>, [<pk_colum>:<pk_value> ... <pk_colum>:<pk_value>,])
{
    <fields>
}

Például:

mutation {
  deletebook(id: 1234)
  {
    id
    title
  }  
}

Adatbázistranzakciók mutációhoz

Egy tipikus GraphQL-mutációs kérelem feldolgozásához a Data API Builder két adatbázis-lekérdezést hoz létre. Az adatbázis-lekérdezések egyike végrehajtja a mutációhoz társított frissítési (vagy) beszúrási (vagy) törlési műveletet. A másik adatbázis-lekérdezés lekéri a kijelölési csoportban kért adatokat.

A Data API Builder mindkét adatbázis-lekérdezést végrehajtja egy tranzakcióban. A tranzakciók csak SQL-adatbázistípusokhoz jönnek létre.

Az alábbi táblázat felsorolja azokat az elkülönítési szinteket, amelyekkel az egyes adatbázistípusokhoz létrejönnek a tranzakciók.

Adatbázis típusa Elkülönítési szint További információ
Azure SQL (vagy) SQL Server Lekötött olvasás Azure SQL-
MySQL Ismételhető olvasás MySQL-
PostgreSQL Lekötött olvasás PostgreSQL