GraphQL dan
REST adalah dua paradigma yang digunakan untuk membuat API untuk aplikasi web.
REST adalah seperangkat pengidentifikasi unik (URL) yang digunakan aplikasi untuk meminta dan mengirim data.
GraphQL adalah bahasa permintaan yang memungkinkan aplikasi klien untuk secara tepat menentukan data yang mereka butuhkan dari satu titik akhir.
Ini adalah teknologi terkait, mereka digunakan terutama untuk hal yang sama (atau mereka dapat hidup berdampingan), tetapi mereka sangat berbeda.
Kedengarannya agak segar, bukan? Mari kita jelaskan perbedaannya dengan cara yang lebih menarik, yang dapat membantu Anda lebih memahami GraphQL, dan mungkin hanya menghiburnya.
Apakah Anda di pesta koktail

Anda datang ke pesta untuk melakukan networking, jadi Anda perlu informasi tentang orang-orang di sekitar Anda. Di dekatnya ada lima tamu lagi.
Tag nama mereka adalah sebagai berikut:
REST Kaya
Teman Richy REST
Majikan dari Richy REST
Georgia GraphQL
Menjadi pengunjung pesta yang aktif dan mudah bergaul, Anda langsung pergi ke Richie Rest dan berkata: "Hai, saya Adam Epilasi, dan siapa Anda?" Jawaban Richie Resta adalah:
{ name: "Richy REST", age: 33, married: false, hometown: "Circuits-ville", employed: true // ... 20 other things about Richy REST }
Anda berpikir sendiri, "Wow, terlalu banyak informasi segera." Mencoba menghindari keheningan yang canggung, Anda ingat bahwa Richie Rest menyebutkan bahwa ia bekerja, dan bertanya: "Di mana Anda bekerja?"
Anehnya, Richie Rest tidak tahu di mana dia bekerja. Mungkin majikan Richie Resta yang tahu?
Anda mengajukan pertanyaan yang sama kepada Majikan Ritchie Resta, yang dengan senang hati menjawab pertanyaan Anda:
{ company: "Mega Corp", employee_count: 11230, head_quarters: "1 Main Avenue, Big City, 10001, PL" year_founded: 2005, revenue: 100000000, // ... 20 other things about Richy REST Employer }
Pada titik ini Anda sudah kelelahan. Anda bahkan tidak ingin bertemu dengan teman Richie Resta! Ini bisa berlangsung selamanya, buang semua energi Anda, dan selain itu, Anda tidak lagi punya waktu.
Namun, Georgia GrafKewel berdiri sangat dekat dan Anda memutuskan untuk mengobrol dengannya.
"Hai, siapa namamu?"
{ name: "Georgia GraphQL" }
"Kamu dari mana dan berapa umurmu?"
{ hometown: "Pleasant-Ville", age: 28 }
"Berapa banyak hobi dan teman yang kamu miliki dan apa nama temanmu?"
{ hobbies_count: 12, friends_count: 50, friends: [ { name: "Steve" }, { name: "Anjalla" }, // ...etc ] }
Georgia GrafKewEl adalah pikiran yang luar biasa, jelas mengartikulasikan, ringkas dan akurat. Anda pasti ingin bertukar kartu nama dengannya dan bekerja sama dalam proyek-proyek masa depan.
Kisah ini mencakup pengalaman pengembang yang bekerja dengan GraphQL dan REST. GraphQL memungkinkan pengembang untuk merumuskan apa yang mereka inginkan dengan permintaan yang rapi dan hanya mendapatkan apa yang mereka tentukan sebagai respons. Kueri ini dinamis, jadi hanya diperlukan satu titik akhir. REST, sebaliknya, telah menentukan jawaban dan mengharuskan aplikasi untuk menggunakan beberapa titik akhir untuk sepenuhnya meminta data.
Akhiri dengan metafora. Mari kita mulai bisnis
Untuk pengungkapan lebih lanjut dari konsep-konsep yang disajikan dalam metafora partai, kami beralih secara khusus ke dua batasan yang sering muncul ketika menggunakan REST.
1. Beberapa klik untuk mendapatkan sumber daya terkaitManajemen data untuk aplikasi seluler dan web seringkali memerlukan sumber daya dan kumpulan data terkait. Dengan demikian, memperoleh data menggunakan REST API dapat melibatkan banyak permintaan untuk beberapa titik akhir. Misalnya, permintaan Posting dan Pembuatnya yang terkait dapat dilakukan dengan dua permintaan ke titik akhir yang berbeda:
someServer.com/authors/:id someServer.com/posts/:id
Panggilan berulang ke API memengaruhi kinerja aplikasi. Ini bahkan lebih penting untuk perangkat dengan bandwidth rendah (misalnya, jam tangan pintar, IoT, perangkat seluler lama, dll.).
2. Over-fetching dan under-fetchingPengambilan berlebihan / kurang pengambilan tidak bisa dihindari saat menggunakan RESTful API. Dengan menggunakan contoh di atas, titik akhir domainName.com/posts/:id mengambil data untuk catatan tertentu. Setiap entri terdiri dari atribut seperti id, badan, judul, tanggal penerbitan, authorId, dan lainnya. Di REST, respons sudah ditentukan sebelumnya dan objek data yang sama selalu dikembalikan.
Dalam situasi di mana hanya judul dan teks rekaman yang diperlukan, pengambilan berlebihan terjadi karena lebih banyak data dikirim melalui jaringan daripada yang sebenarnya digunakan.
Ketika seluruh publikasi diperlukan, bersama dengan data terkait tentang pembuatnya, ada kekurangan pengambilan yang kurang - karena lebih sedikit data yang dikirim melalui jaringan daripada yang sebenarnya digunakan. Kurangnya pengambilan data yang tidak memadai menyebabkan peningkatan jumlah permintaan API dan, akibatnya, penggunaan sumber daya Internet yang berlebihan.
Permintaan Klien dengan GraphQL
GraphQL mewakili pendekatan unik yang memberikan fleksibilitas luar biasa untuk aplikasi klien. Dengan GraphQL, kueri dikirim ke API Anda, dan persis apa yang Anda butuhkan dikembalikan - tidak lebih, tidak kurang - dalam satu permintaan. Hasil kueri dikembalikan dalam bentuk yang sama dengan kueri itu sendiri, memastikan bahwa struktur respons selalu dapat diprediksi. Faktor-faktor ini memungkinkan aplikasi untuk berjalan lebih cepat dan lebih stabil karena
mereka mengontrol data yang mereka terima, bukan server.
“Hasilnya dikembalikan dalam bentuk yang sama dengan permintaan”
{ myFriends(first: 2) { items { name age } } }
/* Response */ { "data": { "items": [ { "name": "Steve", "age": 27 }, { "name": "Kelly", "age": 31 } ] } }
Pemeriksaan realitas
Sekarang Anda mungkin berpikir bahwa bekerja dengan GraphQL semudah memotong mentega hangat dengan pedang samurai. Ini mungkin benar untuk pengembang front-end. Namun, ketika datang untuk mengkonfigurasi sisi server, seseorang harus melakukan pekerjaan yang paling sulit. Teman kami Georgia GrafKewEl telah berupaya keras untuk menjadi seorang profesional yang berkelas.
Membuat sisi Server GraphQL API membutuhkan waktu, upaya, dan pengalaman. Meskipun demikian, mereka yang siap untuk pengujian dapat mengatasi hal ini. Ada banyak cara untuk melakukan ini, misalnya:
Sendiri : jika Anda benar-benar ingin melakukan semuanya sendiri, cobalah membangun GraphQL API dengan paket. Menggunakan Rails? Coba graphql-ruby. Suka Node.js? Coba express-graphql.
Dengan bantuan : jika konfigurasi hosting fleksibel adalah prioritas bagi Anda, maka sesuatu seperti Graph.cool dapat membantu Anda memulai dengan proyek GraphQL.
Instan : Bosan menulis template CRUD dan ingin memulai dengan cepat? 8base menyediakan API GraphQL instan dan backend server yang dapat diperpanjang.
Kesimpulannya
Untuk layanan web, REST adalah langkah maju yang signifikan, membuatnya mudah untuk membuat API untuk mengakses sumber daya yang diperlukan. Namun, desainnya tidak memperhitungkan perkembangan perangkat seluler saat ini, dengan berbagai pembatasan volume dan persyaratan pengunduhan data. Kelalaian ini menyebabkan semakin populernya GraphQL, yang Facebook buat menjadi open source pada 2015, terutama karena fleksibilitas yang diberikannya kepada pengembang front-end. Bekerja dengan GraphQL adalah pengalaman yang luar biasa baik bagi pengembang individu maupun tim.