GraphQL – Perkembangan teknologi API saat ini sudah sangat populer. Apabila kamu sudah pernah menggunakan API, maka kamu wajib mengetahui salah satu teknologi bahasa query yang diciptakan oleh Facebook, yaitu GraphQL. Diciptakan pada tahun 2012 untuk mempermudah komunikasi antara client dan server dalam mengambil dan memanipulasi data.
Pada pembahasan kali ini, kita akan mengulik lebih lengkap mengenai apa itu GraphQL dan apa hubungannya dengan API atau Application Programming Interface.
Apa itu GraphQL?
GraphQL adalah sebuah query untuk API dan runtime untuk memenuhi query tersebut dengan data yang ada, dengan deskripsi data yang lengkap dan mudah dimengerti.
Teknologi satu ini memungkinkan klien meminta data sesuai yang mereka butuhkan dan tidak berlebihan. GraphQL hampir mirip dengan API, namun dengan konsep baru yang membuat kita lebih leluasa untuk mendapatkan data yang kita inginkan.
Tidak seperti halnya API, dimana terkadang memberikan data yang kita tidak butuhkan dan dapat memperlambat proses pengambilan data. GraphQL dibuat dengan tujuan untuk mempermudah komunikasi data antara backend dengan frontend atau dengan aplikasi mobile.
Perbedaan GraphQL dengan API?
Seperti yang sudah disinggung sebelumnya, GraphQL memiliki perbedaan dengan API. Sistem GraphQL membuat komunikasi antara server dan klien dalam mengkonsumsi API, jadi lebih jelas dengan struktur skema yang disepkati dan lebih fleksibel.
Dalam hal ini, server atau backend tidak perlu lagi membuat endpoint untuk setiap request tertentu. Melainkan klien akan punya kekuatan fleksibel, dimana mereka bisa mengatur kolom apa saja yang mau dirquest atau dibutuhkan untuk keperluan aplikasi tanpa membuat berbagai endpoint.
Sehingga sebagai clien, kita tidak ada lagi request yang boros atau kurang, karena server tidak lagi selalu menentukan apa saja data yang direturn.
Kelebihan GraphQL?
GraphQL berfungsi sebagai data interface seperti Rest API yang memiliki beberapa kelebihan seperti:
1. Mengatasi overfetching
Overfetching atau pengambilan data berlebih adalah proses dimana klien mendapatkan lebih banyak data daripada yang dibutuhkan komponen fitur tertentu.
Selain itu, keunggulan lainnya adalah mendukung rapid development di frontend. Dengan GraphQL kita dapat mendefinisikan sendiri data yang kita mau tanpa harus meminta backend untuk menyediakan data yang baru lagi, yang mana akan membuat proses developent pada frontend akan menjadi terhambat, karena harus menunggu backend untuk menambahkan datanya dan membuat endpoint baru.
2. Berjalan dibanyak bahasa pemrograman
Salah satu hal terpenting yaitu GraphQL dapat berjalan di berbagai bahasa pemrograman, mulai dari javascript, PHP, C#, Ruby, Phyton, dan masih banyak yang lainnya. Kamu dapat melihat bahasa pemrograman apa saja yang support di Code GraphQL.
3. Instropection Query
GraphQL memiliki Instropection Query yang akan mengunduh dokumentasi dari skema. Dengan query ini, kita akan selalu memiliki skema yang up to date. Sementara REST API tidak ada standar baku untuk mendefinisikan skema. Kamu dapat menggunakan standar yang berbeda-beda seperti SOAP atau SWAGGER.
4. Fitur Data Typing
GraphQL juga memiliki fitur data typing yang membantu kamu mengetahui type data apa yang harus dikirim dan yang akan dikembalikan dari server. Dalam REST API, semua resource dikirim dalam bentuk data yang terbatas sehingga kita seringkali harus melakukan data casting.
5. Type Safety
Kelebihan selanjutnya yang tidak kalah menarik adalah type-safety yang akan mendukung predictability data yang akan dikembangkan. Kita tidak perlu menebak-nebak dan menyesuaikan tipe data yang akan kita gunakan.
Apabila kita menggunakan bahasa pemrograman yang static-type seperti Java untuk android, Objective-C atau Swift untuk IOs, kita bisa men-generate kode dengan mudah dan IDE akan membantu kita untuk menghemat waktu dan menghindari bug yang terjadi terkait dengan kesalahan tipe data atau kurangnya atribut atau nilai yang di-assign pada objek.
Sumber :
https://www.rumahkomunitas.com/article/apa-itu-graphql-mengenal-graphql-dan-fungsinya?ref=1&x=12
https://blog.petrabarus.net/2019/12/10/membangun-api-modern-menggunakan-graphql/