Bagikan melalui


Host titik akhir GraphQL di penyusun API Data

Entitas yang dikonfigurasi agar tersedia melalui GraphQL tersedia di jalur default: https://{base_url}//graphql. Pembuat API Data secara otomatis menghasilkan skema GraphQL dengan bidang kueri dan mutasi untuk semua entitas yang dikonfigurasi. Skema GraphQL dapat dijelajahi menggunakan klien GraphQL modern yang menyertakan fitur seperti pelengkapan otomatis.

Jika Anda mengikuti contoh Memulai , di mana ada dan entitas yang dikonfigurasi untuk akses GraphQL, Anda dapat melihat betapa mudahnya menggunakan GraphQL.

Format tataan hasil

Hasil yang dikembalikan adalah objek JSON dengan format ini:

{
    "data": {}    
}

Nota

Hanya 100 item pertama yang dikembalikan secara default.

Jenis akar yang didukung

Penyusun API Data mendukung jenis akar GraphQL berikut:

kueri Mutasi

Pertanyaan

Setiap entitas memiliki dukungan untuk tindakan berikut:

  • Pagination
  • Kueri menurut Kunci primer
  • Kueri Umum

Penyusun API Data, kecuali ditentukan lain, menggunakan nama tunggal entitas setiap kali kueri diharapkan mengembalikan satu item. Sebaliknya, penyusun Api Data menggunakan nama jamak entitas setiap kali kueri diharapkan mengembalikan daftar item. Misalnya, entitas book memiliki:

  • book_by_pk(): untuk mengembalikan nol atau satu entitas
  • books(): untuk mengembalikan daftar entitas nol atau lebih

Pagination

Semua jenis kueri yang mengembalikan nol item atau lebih mendukung penomoran halaman:

{
  books
  {
    items {
      title
    }
    hasNextPage
    endCursor
  }
}
  • objek item memungkinkan akses ke bidang entitas
  • hasNextPage diatur ke true jika ada lebih banyak item yang akan dikembalikan
  • endCursor mengembalikan string kursor buram yang dapat digunakan dengan parameter kueri first dan after untuk mendapatkan kumpulan item berikutnya (atau halaman).

Kueri menurut kunci utama

Setiap entitas mendukung pengambilan item tertentu melalui Kunci Primernya, menggunakan format kueri berikut:

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

Misalnya:

{
  book_by_pk(id:1010) {
    title
  }
}

Kueri generik

Setiap entitas juga mendukung pola kueri generik sehingga Anda hanya dapat meminta item yang Anda inginkan, sesuai urutan yang Anda inginkan, menggunakan parameter berikut:

  • filter: memfilter item yang dikembalikan
  • orderBy: menentukan bagaimana data yang dikembalikan diurutkan
  • first dan after: hanya mengembalikan item n teratas

Misalnya:

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

filter

Nilai parameter filter adalah ekspresi predikat (ekspresi yang mengembalikan nilai boolean) menggunakan bidang entitas. Hanya item di mana ekspresi mengevaluasi ke 'True' yang disertakan dalam respons. Misalnya:

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

Kueri ini mengembalikan semua buku dengan kata Foundation dalam judul.

Operator yang didukung oleh parameter filter adalah:

Operator Jenis Deskripsi Contoh
eq Perumpamaan Sama books(filter: { title: { eq: "Foundation" } })
neq Perumpamaan Tidak sama dengan books(filter: { title: { neq: "Foundation" } })
gt Perumpamaan Lebih besar dari books(filter: { year: { gt: 1990 } })
gte Perumpamaan Lebih besar dari atau sama dengan books(filter: { year: { gte: 1990 } })
lt Perumpamaan Kurang books(filter: { year: { lt: 1990 } })
lte Perumpamaan Kurang dari atau sama dengan books(filter: { year: { lte: 1990 } })
isNull Perumpamaan Null books(filter: { year: { isNull: true} })
contains Tali Berisi books(filter: { title: { contains: "Foundation" } })
notContains Tali Tidak Berisi books(filter: { title: { notContains: "Foundation" } })
startsWith Tali Dimulai dengan books(filter: { title: { startsWith: "Foundation" } })
endsWith Tali Akhiri dengan books(filter: { title: { endsWith: "Empire" } })
and Logis Logika dan authors(filter: { and: [ { first_name: { eq: "Robert" } } { last_name: { eq: "Heinlein" } } ] })
or Logis Logika atau authors(filter: { or: [ { first_name: { eq: "Isaac" } } { first_name: { eq: "Dan" } } ] })

orderBy

Nilai orderby mengatur urutan pengembalian item dalam resultset. Misalnya:

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

Kueri ini mengembalikan buku yang diurutkan berdasarkan title.

first dan after

Parameter first membatasi jumlah item yang dikembalikan. Misalnya:

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

Kueri ini mengembalikan lima buku pertama. Ketika tidak ada orderBy yang ditentukan, item diurutkan berdasarkan kunci primer yang mendasar. Nilai yang diberikan untuk orderBy harus berupa bilangan bulat positif.

Jika ada lebih banyak item di entitas book daripada entitas yang diminta melalui first, bidang hasNextPage akan mengevaluasi ke true, dan endCursor akan mengembalikan string yang dapat digunakan dengan parameter after untuk mengakses item berikutnya. Misalnya:

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

Mutasi

Untuk setiap entitas, mutasi untuk mendukung operasi buat, perbarui, dan hapus dibuat secara otomatis. Operasi mutasi dibuat menggunakan pola nama berikut: <operation><entity>. Misalnya, untuk entitas book, mutasinya adalah:

  • createbook: buat buku baru
  • updatebook: memperbarui buku yang ada
  • deletebook: hapus buku yang ditentukan

Menciptakan

Untuk membuat elemen baru dari entitas yang diinginkan, mutasi create<entity> disediakan. Mutasi yang dibuat memerlukan parameter item, di mana nilai untuk bidang wajib entitas, untuk digunakan saat membuat item baru, ditentukan.

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

Misalnya:

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

Pemutakhiran

Untuk memperbarui elemen entitas yang diinginkan, mutasi update<entity> disediakan. Mutasi pembaruan memerlukan dua parameter:

  • <primary_key>, daftar nilai kunci kolom kunci utama dan nilai terkait untuk mengidentifikasi elemen yang akan diperbarui
  • item: parameter, dengan nilai bidang wajib entitas, yang akan digunakan saat memperbarui item yang ditentukan
update<entity>(<pk_colum>:<pk_value>, [<pk_colum>:<pk_value> ... <pk_colum>:<pk_value>,] item: <entity_fields>)
{
    <fields>
}

Misalnya:

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

Menghapus

Untuk menghapus elemen entitas yang diinginkan, mutasi delete<entity> disediakan. Kunci utama elemen yang akan dihapus adalah parameter yang diperlukan.

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

Misalnya:

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

Transaksi database untuk mutasi

Untuk memproses permintaan mutasi GraphQL yang khas, pembuat API Data membuat dua kueri database. Salah satu kueri database melakukan tindakan pembaruan (atau) sisipkan (atau) hapus yang terkait dengan mutasi. Kueri database lainnya mengambil data yang diminta dalam kumpulan pilihan.

Penyusun API Data menjalankan kedua kueri database dalam transaksi. Transaksi dibuat hanya untuk jenis database SQL.

Tabel berikut mencantumkan tingkat isolasi tempat transaksi dibuat untuk setiap jenis database.

Tipe Database Tingkat Isolasi Informasi selengkapnya
Azure SQL (atau) SQL Server Baca Diterapkan Azure SQL
MySQL Baca yang Dapat Diulang MySQL
PostgreSQL Baca Diterapkan PostgreSQL
  • referensi konfigurasi GraphQL
  • OpenAPI