Bagikan melalui


Cara memanggil titik akhir GraphQL

Titik akhir GraphQL di Penyusun API Data (DAB) memungkinkan Anda mengkueri dan memodifikasi data dengan presisi. Setiap kueri mendeklarasikan dengan tepat bidang apa yang Anda butuhkan dan mendukung argumen untuk memfilter, mengurutkan, dan membuat halaman hasil.

Secara default, DAB menghosting titik akhir GraphQL-nya di:

https://{base_url}/graphql

Entitas yang diekspos melalui konfigurasi secara otomatis disertakan dalam skema GraphQL. Misalnya, jika Anda memiliki books entitas dan authors , keduanya muncul sebagai bidang akar dalam skema.

Nota

Gunakan klien atau IDE GraphQL modern (seperti Apollo, Insomnia, atau VS Code GraphQL) untuk menjelajahi skema dan bidang lengkapi otomatis.

Kata kunci yang didukung di penyusun API Data

Konsep GraphQL Tujuan
Projection items Pilih bidang mana yang akan dikembalikan
Penyaringan saringan Membatasi baris menurut kondisi
Pengurutan orderBy Tentukan urutan pengurutan
Ukuran halaman first Batasi jumlah item per halaman
Kelanjutan sesudah Lanjutkan dari halaman terakhir

Struktur dasar

Setiap kueri GraphQL dimulai dengan bidang akar yang mewakili entitas.

{
  books {
    items {
      id
      title
      price
    }
  }
}

Hasilnya adalah objek JSON dengan bentuk yang sama dengan kumpulan pilihan Anda:

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

Nota

Secara default, DAB mengembalikan hingga 100 item per kueri kecuali dikonfigurasi sebaliknya (runtime.pagination.default-page-size).

Jenis kueri

Setiap entitas mendukung dua kueri akar standar:

Pertanyaan Deskripsi
entity_by_pk Mengembalikan satu rekaman dengan kunci utamanya
entities Mengembalikan daftar rekaman yang cocok dengan filter

Contoh mengembalikan satu rekaman:

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

Contoh mengembalikan banyak:

{
  books {
    items {
      id
      title
    }
  }
}

Memfilter hasil

filter Gunakan argumen untuk membatasi rekaman mana yang dikembalikan.

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

Kueri ini mengembalikan semua buku yang judulnya berisi "Foundation."

Filter dapat menggabungkan perbandingan dengan operator logis:

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

Lihat referensi argumen filter untuk operator yang didukung seperti eq, neq, lt, lte, dan isNull.

Mengurutkan hasil

Argumen orderBy menentukan bagaimana rekaman diurutkan.

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

Ini mengembalikan buku yang diurutkan berdasarkan year menurun, lalu berdasarkan title.

Lihat referensi argumen orderBy untuk detail selengkapnya.

Membatasi hasil

Argumen first membatasi berapa banyak rekaman yang dikembalikan dalam satu permintaan.

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

Ini mengembalikan lima buku pertama, diurutkan berdasarkan kunci primer secara default. Anda juga dapat menggunakan first: -1 untuk meminta ukuran halaman maksimum yang dikonfigurasi.

Pelajari selengkapnya dalam referensi argumen pertama.

Melanjutkan hasil

Untuk mengambil halaman berikutnya, gunakan argumen after bersama kursor dari kueri sebelumnya.

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

Token after menandai tempat halaman sebelumnya berakhir. Lihat setelah referensi argumen untuk detail selengkapnya.

Pemilihan bidang (proyeksi)

Di GraphQL, Anda memilih dengan tepat bidang mana yang muncul dalam respons. Tidak ada wildcard seperti SELECT *. Minta hanya apa yang Anda butuhkan.

{
  books {
    items { id title price }
  }
}

Anda juga dapat menggunakan alias untuk mengganti nama bidang dalam respons:

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

Lihat referensi proyeksi bidang untuk detailnya.