GraphQL
Last updated
Was this helpful?
Last updated
Was this helpful?
GraphQL merupakan query language seperti SQL, namun perbedaannya adalah SQL bertugas untuk melakukan query ke database, sedangkan GraphQL bertugas untuk melakukan query ke suatu web service yang menjalankan GraphQL server
Dengan menerapkan GraphQL pada webservice maka kita akan mendapatkan beberapa kelebihan berikut, yaitu :
Apabila kita menggunakan GraphQL pada web service, maka kita cukup memberikan satu endpoint kepada client, misalnya /graphql
, dengan menggunakan satu endpoint ini maka client sudah bisa mendapatkan data apapun yang disediakan
Berbeda dengan REST yang membutuhkan banyak endpoint untuk mendapatkan berbebagi jenis data, misalnya data biodata menggunakan endpoint /biodata
, data produk menggunakan endpoint /produk
, dan sebagainya
Permasalahan yang sering terjadi saat client meminta data ke REST adalah data yang diterima terlalu kompleks, sedangkan yang dibutuhkan hanya beberapa field saja, misalnya data biodata memiliki struktur seperti berikut
Misalnya dari data biodata diatas, client hanya membutuhkan nama
saja, hal ini tidak dapat kita lakukan karena REST akan memberikan seluruh field yang dimiliki dan membuat kita menjadi boros
Dengan menggunakan GraphQL maka client bisa menentukan field apa saja yang ia butuhkan, sehingga tidak boros resource
Permasalahan lain yang sering dijumpai oleh client adalah tidak tau bagaimana cara menggunakan suatu web service karena tidak dilengkapi dengan dokumentasi penggunaan, dengan menerapkan GraphQL maka GraphQL akan secara otomatis membuatkan dokumentasi penggunaan sehingga mempermudah client saat menggunakan web service tersebut
Berikut contoh beberapa web service yang menggunakan GraphQL, silahkan dicoba agar lebih memahami cara menggunakan GraphQL
Sebelum membuat GraphQL server, mari kita pahami dulu cara kerja dari GraphQL server serta beberapa istilah yang perlu kita pahami
GraphQL server merupakan server yang dapat menerima query GraphQL dan memberikan data berdasarkan permintaan client, untuk membuat GraphQL server kita bisa menggunakan package yang bernama graphql
ditambah dengan framework web seperti express
Schema merupakan bagian dari GraphQL server yang menentukan bentuk dari data dan operasi apa saja yang dapat dilakukan
Query merupakan bagian dari schema yang menentukan operasi apa saja yang bisa dilakukan yang berhubungan dengan pengambilan suatu data ( fetching data ) misalnya getBiodata
, getBiodataByIndex
dan sebagainya
Mutation merupakan bagian dari schema yang menentukan operasi apa saja yang bisa dilakukan yang berhubungan dengan perubahan suatu data, misalnya penambahan data, perubahan data, serta penghapusan data
Kalau schema hanya menentukan operasi apa saja yang dapat dilakukan, maka disini resolver bertugas untuk menyediakan data yang dibutuhkan oleh schema, misalnya dengan mengambil data dari database atau meminta data ke web service lain
Pada tutorial berikut kita akan membuat sebuah GraphQL Server yang menyediakan data Biodata, dimana kita bisa mengambil dan melakukan perubahan pada data tersebut
graphql
merupakan package yang berisi library utama dari graphql, disini kita menggunakan express untuk membuat GraphQL server, maka dari itu kita perlu package express-graphql
untuk menghubungkan graphql dan express
Kali ini kita akan membuat sebuah variabel yang berisi data biodata untuk mensimulasikan data dari database untuk mempermudah tutorial ini
Terakhir kita tinggal menggabungkan schema dan resolver dengan membuat sebuah server
Selesai, maka sekarang kita bisa menggunakan GraphQL server tersebut dengan mengunjungi /graphql
Kita bisa membuat sebuah schema dengan menggunakan fungsi buildSchema
, kita tinggal memasukkan untuk membuat schema GraphQL