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
}