Kenalan dengan GraphQL

Albilaga Linggra Pradana
Blackdesk
Published in
2 min readAug 15, 2017
Logo GraphQL ( diambil dari : http://graphql.org/ )

Belakangan ini sering kita dengar GraphQL. “GraphQL is the future. GraphQL is the better REST” dan sebagainya. Yang rame terakhir adalah Github API yang merubah APInya menjadi menggunakan GraphQL

Nah yuk sekarang kita telisik dulu apa si sebetulnya GraphQL ini? Menurut website resminya :

GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.

Singkatnya adalah GraphQL adalah bahasa query untuk API. Untuk sejarah GraphQL kalian bisa baca sendiri di sini. Jadi apa bedanya si dengan REST API yang biasa kita konsumsi? Coba kita bandingkan. Misal kita ingin memanggil daftar list hero yang ada di API kita, ketika kita menggunakan REST API akan seperti ini: https://base_url/heroes dan kembaliannya akan seperti ini

`{
“heroes”: [{
“name”: “Dr. Stranger”,
“height”: 173,
“weight”: 70
},
{
“name”: “Superman”,
“height”: 163,
“weight”: 60
}]
}`

Misal di view kita, kita hanya ingin menampilkan nama hero saja. Tentu hal ini tidak bisa dilakukan dengan REST API. Di sinilah GraphQL membantu kita. Kita bisa query langsung “API aku hanya minta nama hero dari semua list hero saja” dengan cara menembak endpoint https://base_url/ dan di body request kita akan mendefinisikan data yang kita minta seperti:

`heroes {
name
}`

dan nanti dia akan menampilkan seperti ini:

`{
“heroes”: [{
“name”: “Dr. Stranger”
},
{
“name”: “Superman”
}]
}`

Ini adalah salah satu dari sekian keunggulan GraphQL yaitu mengatasi overfetching. Overfetching adalah di mana client mendownload lebih banyak informasi daripada yang dibutuhkan. Tentu saja ada keunggulan lain seperti memudahkan untuk rapid development di front end. Karena dengan GraphQL kita bisa mendefinisikan sendiri data yang kita mau tanpa harus meminta backend untuk menyediakan data yang baru lagi (dan tentunya akan membuat proses development menjadi terhambat karena harus menunggu backend untuk menambahkan datanya).

Bagaimana? Tertarik dengan GraphQL? Kalian bisa belajar GraphQL sendiri dari sini

  1. http://graphql.org/learn/
  2. https://www.howtographql.com/

Jika kalian ada resource lain untuk belajar GraphQL, bisa tinggalkan link di komen

--

--