GraphQL - Jenis Sistem
GraphQL adalah bahasa yang diketik dengan kuat. Type System mendefinisikan berbagai tipe data yang dapat digunakan dalam aplikasi GraphQL. Sistem tipe membantu untuk menentukan skema, yang merupakan kontrak antara klien dan server. Jenis data GraphQL yang umum digunakan adalah sebagai berikut -
Sr.No. | Jenis & Deskripsi |
---|---|
1 | Scalar Menyimpan satu nilai |
2 | Object Menunjukkan jenis objek yang bisa diambil |
3 | Query Jenis titik masuk ke jenis khusus lainnya |
4 | Mutation Titik masuk untuk manipulasi data |
5 | Enum Berguna dalam situasi di mana Anda membutuhkan pengguna untuk memilih dari daftar opsi yang ditentukan |
Jenis Skalar
Tipe skalar adalah tipe data primitif yang hanya dapat menyimpan satu nilai. Jenis skalar default yang ditawarkan GraphQL adalah -
Int - Integer 32-bit yang ditandatangani
Float - Nilai floating point presisi ganda yang ditandatangani
String - UTF - urutan 8 karakter
Boolean - Benar atau salah
ID - Pengenal unik, sering digunakan sebagai pengenal unik untuk mengambil objek atau sebagai kunci cache.
Sintaks untuk mendefinisikan tipe skalar adalah sebagai berikut -
field: data_type
Potongan yang diberikan di bawah ini mendefinisikan bidang bernama salam yang mengembalikan nilai String.
greeting: String
Jenis Objek
Tipe objek adalah tipe yang paling umum digunakan dalam skema dan mewakili sekelompok bidang. Setiap bidang di dalam tipe objek dipetakan ke tipe lain, sehingga memungkinkan tipe bertingkat. Dengan kata lain, sebuah tipe objek terdiri dari beberapa tipe skalar atau tipe objek.
Sintaks untuk mendefinisikan tipe objek diberikan di bawah ini -
type object_type_name
{
field1: data_type
field2:data_type
....
fieldn:data_type
}
Anda dapat mempertimbangkan cuplikan kode berikut -
--Define an object type--
type Student {
stud_id:ID
firstname: String
age: Int
score:Float
}
--Defining a GraphQL schema--
type Query
{
stud_details:[Student]
}
Contoh yang diberikan di atas mendefinisikan Student tipe data objek. Bidang stud_details di root Query schema akan mengembalikan daftar objek Student.
Jenis Kueri
Kueri GraphQL digunakan untuk mengambil data. Ini seperti meminta sumber daya dalam API berbasis REST. Sederhananya, tipe Query adalah permintaan yang dikirim dari aplikasi klien ke server GraphQL. GraphQL menggunakanSchema Definition Language (SDL)untuk mendefinisikan Query. Jenis kueri adalah salah satu dari banyak jenis tingkat akar di GraphQL.
Sintaks untuk mendefinisikan Query adalah seperti yang diberikan di bawah ini -
type Query {
field1: data_type
field2:data_type
field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}
Contoh mendefinisikan Query -
type Query {
greeting: String
}
Jenis Mutasi
Mutasi adalah operasi yang dikirim ke server ke create, update atau deletedata. Ini analog dengan kata kerja PUT, POST, PATCH dan DELETE untuk memanggil API berbasis REST.
Mutasi adalah salah satu tipe data tingkat akar di GraphQL. Jenis Query mendefinisikan titik masuk untuk operasi pengambilan data sedangkan jenis Mutasi menentukan titik masuk untuk operasi manipulasi data.
Sintaks untuk mendefinisikan tipe Mutasi diberikan di bawah ini -
type Mutation {
field1: data_type
field2(param1:data_type,param2:data_type,...paramN:data_type):data_type
}
Sebagai contoh, kita dapat mendefinisikan tipe mutasi untuk menambahkan Student baru seperti di bawah ini -
type Mutation {
addStudent(firstName: String, lastName: String): Student
}
Jenis Enum
Enum mirip dengan tipe skalar. Enum berguna dalam situasi di mana nilai bidang harus dari daftar opsi yang ditentukan.
Sintaks untuk mendefinisikan tipe Enum adalah -
type enum_name{
value1
value2
}
Cuplikan berikut menggambarkan bagaimana jenis enum dapat didefinisikan -
type Days_of_Week{
SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
}
Jenis Daftar
Daftar dapat digunakan untuk mewakili larik nilai dengan tipe tertentu. Daftar didefinisikan dengan pengubah tipe [] yang membungkus tipe objek, skalar, dan enum.
Sintaks berikut dapat digunakan untuk menentukan jenis daftar -
field:[data_type]
Contoh di bawah ini mendefinisikan tipe daftar todos -
type Query {
todos: [String]
}
Jenis Non-Nullable
Secara default, setiap jenis skalar inti dapat disetel ke nol. Dengan kata lain, tipe ini dapat mengembalikan nilai dari tipe yang ditentukan atau tidak memiliki nilai. Untuk mengesampingkan default ini dan menetapkan bahwa bidang harus ditentukan, tanda seru (!) Dapat ditambahkan ke jenis. Ini memastikan adanya nilai dalam hasil yang dikembalikan oleh kueri.
Sintaks berikut dapat digunakan untuk menentukan bidang non-nullable -
field:data_type!
Dalam contoh di bawah ini, stud_id dideklarasikan sebagai bidang wajib.
type Student {
stud_id:ID!
firstName:String
lastName:String
fullName:String
college:College
}