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
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
Pertanyaan
Setiap entitas memiliki dukungan untuk tindakan berikut:
- Pagination
- Kueri menurut Kunci primer
- Kueri Umum
Penyusun API Data, kecuali ditentukan lain, menggunakan nama tunggal 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 kuerifirst
danafter
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
danafter
: hanya mengembalikan itemn
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 | |
PostgreSQL | Baca Diterapkan | |