次の方法で共有


GraphQL エンドポイントを呼び出す方法

Data API Builder (DAB) の GraphQL エンドポイントでは、データを精確にクエリおよび変更できます。 各クエリは、必要なフィールドを正確に宣言し、結果のフィルター処理、順序付け、ページングの引数をサポートします。

既定では、DAB は GraphQL エンドポイントを次の位置でホストします。

https://{base_url}/graphql

構成によって公開されるエンティティは、GraphQL スキーマに自動的に含まれます。 たとえば、 books エンティティと authors エンティティがある場合、どちらもスキーマのルート フィールドとして表示されます。

最新の GraphQL クライアントまたは IDE (Apollo、不眠症、VS Code GraphQL など) を使用して、スキーマとオートコンプリート フィールドを探索します。

データ API ビルダーでサポートされているキーワード

概念 GraphQL 目的
Projection 品目 返すフィールドを選択する
フィルタリング フィルター 条件で行を制限する
並べ替え orderBy 並べ替え順序を定義する
ページ サイズ first ページあたりのアイテム数を制限する
継続 最後のページから続行する

基本構造

すべての GraphQL クエリは、エンティティを表すルート フィールドで始まります。

{
  books {
    items {
      id
      title
      price
    }
  }
}

結果は、選択セットと同じ図形を持つ JSON オブジェクトになります。

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

既定では、特に構成されていない限り、DAB はクエリごとに最大 100 個の項目を返します (runtime.pagination.default-page-size)。

クエリの種類

各エンティティは、次の 2 つの標準ルート クエリをサポートしています。

Query 説明
entity_by_pk 主キーで 1 つのレコードを返します
entities フィルターに一致するレコードの一覧を返します。

1 つのレコードを返す例:

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

複数の結果を返す例:

{
  books {
    items {
      id
      title
    }
  }
}

結果のフィルター処理

filter引数を使用して、返されるレコードを制限します。

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

このクエリは、タイトルに "Foundation" が含まれるすべての書籍を返します。

フィルターは、比較と論理演算子を組み合わせることができます。

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

eqneqltlteなどのサポートされている演算子については、isNullを参照してください。

結果を並べ替える

orderBy引数は、レコードの並べ替え方法を定義します。

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

これにより、 year 降順、 title順に並べ替えられた書籍が返されます。

詳細については、 orderBy 引数のリファレンス を参照してください。

結果を制限する

first引数は、1 つの要求で返されるレコードの数を制限します。

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

これにより、既定で主キー順に並べ替えられた最初の 5 つの書籍が返されます。 first: -1を使用して、構成された最大ページ サイズを要求することもできます。

詳しくは、 最初の引数リファレンスをご覧ください

継続的な結果

次のページをフェッチするには、前のクエリのカーソルと共に after 引数を使用します。

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

after トークンは、前のページが終了した場所をマークします。 詳細については、 後引数のリファレンス を参照してください。

フィールドの選択 (プロジェクション)

GraphQL では、応答に表示されるフィールドを正確に選択します。 SELECT *のようなワイルドカードはありません。 必要なものだけを要求します。

{
  books {
    items { id title price }
  }
}

エイリアスを使用して、応答内のフィールドの名前を変更することもできます。

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

詳細については 、フィールド プロジェクションリファレンス を参照してください。