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


GraphQL-végpontok meghívása

A Data API Builder (DAB) GraphQL-végpontjai lehetővé teszik az adatok pontos lekérdezését és módosítását. Minden lekérdezés pontosan meghatározza, hogy milyen mezőkre van szüksége, és támogatja a szűrési, rendezési és lapozási eredmények argumentumait.

Alapértelmezés szerint a DAB a GraphQL-végpontját a következő helyen tárolja:

https://{base_url}/graphql

A konfigurációval közzétett entitások automatikusan bekerülnek a GraphQL-sémába. Ha például vannak books és authors entitások, mindkettő gyökérmezőként jelenik meg a sémában.

Megjegyzés:

Bármely modern GraphQL-ügyfél vagy IDE (például az Apolló, az Insomnia vagy a VS Code GraphQL) használatával feltárhatja a sémát és automatikusan kitöltheti a mezőket.

A Data API Builderben támogatott kulcsszavak

Concept GraphQL Cél
Projection Elemek Adja meg, hogy mely mezőket adja vissza
Filtering szűrő Sorok korlátozása feltétel szerint
Rendezés orderBy Rendezési sorrend meghatározása
Oldalméret first Az elemek korlátozása oldalanként
Folytatás után Folytatás az utolsó oldalról

Alapszintű struktúra

Minden GraphQL-lekérdezés egy entitást jelképező gyökérmezővel kezdődik.

{
  books {
    items {
      id
      title
      price
    }
  }
}

Az eredmény egy olyan JSON-objektum, amelynek alakzata megegyezik a kijelölési csoportéval:

{
  "data": {
    "books": {
      "items": [
        { "id": 1, "title": "Dune", "price": 20 },
        { "id": 2, "title": "Foundation", "price": 18 }
      ]
    }
  }
}

Megjegyzés:

Alapértelmezés szerint a DAB lekérdezésenként legfeljebb 100 elemet ad vissza, kivéve, ha másként van konfigurálva (runtime.pagination.default-page-size).

Lekérdezéstípusok

Mindegyik entitás két szabványos gyökér lekérdezést támogat:

Query Leírás
entity_by_pk Egy rekordot ad vissza az elsődleges kulcsa alapján
entities A szűrőknek megfelelő rekordok listáját adja vissza

Példa egy rekord visszaadására:

{
  book_by_pk(id: 1010) {
    title
    year
  }
}

Több értéket visszamutató példa:

{
  books {
    items {
      id
      title
    }
  }
}

Eredmények szűrése

filter Az argumentum használatával korlátozhatja, hogy mely rekordokat adja vissza a rendszer.

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

Ez a lekérdezés az összes olyan könyvet visszaadja, amelynek a címe "Foundation" (Alapozás) címet tartalmazza.

A szűrők kombinálhatják a logikai operátorokkal való összehasonlítást:

{
  authors(filter: {
    or: [
      { first_name: { eq: "Isaac" } }
      { last_name: { eq: "Asimov" } }
    ]
  }) {
    items { first_name last_name }
  }
}

Tekintse meg a támogatott operátorok szűrőargumentum-hivatkozását, például eq: , neq, ltlteés isNull.

Találatok rendezése

Az orderBy argumentum határozza meg a rekordok rendezésének módját.

{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}

Ez visszaadja a year szerint csökkenő sorrendben, majd a title alapján rendezett könyveket.

További részletekért tekintse meg az orderBy argumentumra vonatkozó hivatkozást .

Eredmények korlátozása

Az first argumentum korlátozza, hogy egy kérelem hány rekordot ad vissza.

{
  books(first: 5) {
    items { id title }
  }
}

Ez az első öt könyvet adja vissza, alapértelmezés szerint az elsődleges kulcs szerint rendezve. A konfigurált maximális oldalméretet is kérheti first: -1 .

További információ az első argumentumhivatkozásban.

Folyamatos eredmények

A következő lap beolvasásához használja az after argumentumot az előző lekérdezés kurzorával.

{
  books(first: 5, after: "eyJpZCI6NX0=") {
    items { id title }
  }
}

A after token jelzi, hogy hol végződött az előző oldal. További részletekért tekintse meg az argumentumra vonatkozó hivatkozást.

Mezőválasztás (projekció)

A GraphQL-ben pontosan kiválaszthatja, hogy mely mezők jelenjenek meg a válaszban. Nincs olyan helyettesítő karakter, mint a SELECT *. Csak azt kérje, amire szüksége van.

{
  books {
    items { id title price }
  }
}

Aliasokkal is átnevezheti a mezőket a válaszban:

{
  books {
    items {
      bookTitle: title
      cost: price
    }
  }
}

Részletekért lásd a mezővetítési referenciát .