GraphQL vs REST API: Apa Bedanya?
Hai,
apa kabar teman-teman developer?
💻 Mulai Belajar Pemrograman
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.
Daftar SekarangKali ini kami akan membahas mengenai teknologi API yaitu GraphQL dan REST API. Sudah tau apa itu API? Bagaimana sih cara API bekerja? Yuk kita bahas secara umum mengenai API dan apa saja teknologi API yang sedang populer sekarang.
Apa itu API
API atau Application Programming Interface adalah sebuah protokol atau teknologi yang digunakan untuk menangani bagaimana sebuah perangkat lunak dapat berinteraksi satu sama lain. Tentunya sebagai seorang developer, kita pasti pernah mencoba menggunakan API. Salah satu contohnya adalah untuk mendapatkan data dari database.
Hingga saat ini, REST API merupakan salah satu teknologi API yang sering kita gunakan ketika akan mengembangkan sebuah Web APIs. REST API sendiri memiliki banyak kelebihan dan juga kemudahan dalam pengembangannya. Meskipun begitu, REST API masih belum dirasa cukup untuk menyelesaikan permasalahan yang ada sekarang dan juga mengikuti perkembangan teknologi yang semakin cepat.
Apa itu GraphQL
GraphQL API dikembangkan oleh Facebook, dengan tujuan untuk mendapatkan sebuah API yang lebih fleksibel dan efisien. Pendekatan ini dapat menyelesaikan permasalahan yang ada sekarang dan juga permasalahan yang dihadapi pengembang pada saat mengembangkan API dengan menggunakan pendekatan REST API. Meskipun demikian, mengembangkan sebuah API dengan pendekatan GraphQL API juga menambah daftar tantangan baru yang harus diselesaikan oleh para developer.
Perbedaan GraphQL dan REST API
Jadi apa sih yang membuat paradigma GraphQL dan REST API berbeda? Pada artikel kali ini saya akan membahas mengenai perbedaan GraphQL dan REST API dalam proses kita mengakses endpoint dari masing-masing API dan bagaimana respon yang diberikan oleh kedua API tersebut.
Alhasil, kita dapat mengetahui API mana yang lebih mudah digunakan dan efisien dalam mengambil data. Untuk lebih mudah memahaminya, mari kita bandingkan kedua pendekatan ini dalam sebuah contoh skenario. Kita akan membuat sebuah aplikasi Football Database di mana kita dapat melihat detail dari sebuah liga dan masing-masing data tim beserta pemainnya yang ada dalam liga tersebut.
Mari kita lihat bagaimana kedua pendekatan ini menyelesaikan permasalahan itu.
Mendapatkan Data dengan REST API
Berdasarkan skenario tadi mari kita coba dapatkan data tersebut dengan pendekatan REST API. Untuk mendapatkan data detail liga beserta data tim dan pemainnya, setidaknya kita harus mengakses lebih dari satu endpoint. Tentunya kita akan mendapatkan JSON response saat kita meminta data dengan mengakses endpoint. JSON response-nya akan terlihat seperti berikut:
Proses pengambilan data pada REST API ketika membutuhkan lebih dari satu request
Endpoint: /league/:id
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "idLeague":"4328", "strSport":"Soccer", "strLeague":"English Premier League", "intFormedYear":"1992", "strGender":"Male", "strCountry":"England", "strWebsite":"www.premierleague.com", "strDescriptionEN":"The Premier League (often referred to as the English Premier League (EPL) outside England), is the top level of the English football league system.", "strBadge":"/i6o0kh1549879062.png", "strTrophy":"/yrywtr1422246014.png" } |
Kita juga perlu mengakses endpoint berikut untuk mendapatkan daftar tim yang ada pada liga tersebut. Hasilnya akan seperti ini:
Endpoint: /league/:id/teams
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "idTeam":"133604", "strTeam":"Arsenal", "intFormedYear":"1892", "idLeague":"4328", "strStadium":"Emirates Stadium", "strBadge":"/i6o0kh1549879062.png", "strDescription": "Arsenal Football Club is a professional football club based in Holloway, London." }, { "idTeam":"133601", "strTeam":"Aston Villa", "intFormedYear":"1874", "idLeague":"4328", "strStadium":"Villa Park", "strBadge":"/i6o0kh1549879062.png", "strDescription": "Aston Villa Football Club, also known as Villa, The Villa, The Villans, The Lions) are a professional football club based in Witton, Birmingham." } |
Untuk mendapatkan data daftar pemain dari tim-tim tersebut kita juga perlu mengakses satu endpoint lagi seperti berikut:
Endpoint: /team/:id/players
1 2 3 4 5 6 7 8 9 10 |
{ "idPlayer":"12345", "strPlayer":"Ronaldo", "strPhoto":"/i6o0kh1549879062.png" }, { "idPlayer":"54321", "strPlayer":"Messi", "strPhoto":"/i6o0kh1549879062.png" } |
Mendapatkan Data dengan REST API
Wah cukup banyak juga ya endpoint yang perlu kita akses untuk mendapatkan data yang kita butuhkan. Dengan menggunakan REST API kita juga mendapatkan informasi tambahan yang sebenarnya tidak kita butuhkan, hal ini dikarenakan ketika kita mengakses endpoint tersebut, kita akan mendapatkan semua data yang telah ditentukan ketika endpoint tersebut dikembangkan.
Oke, sekarang bagaimana jika kita menggunakan pendekatan GraphQL untuk mendapatkan data tersebut? . Dengan GraphQL ini kita hanya membutuhkan 1 (satu) query yang telah kita tentukan kebutuhannya. Server akan membalas dengan menyediakan JSON object di mana kebutuhan kita tadi telah disesuaikan. Mari kita coba mendapatkan data liga beserta tim dan pemainnya dengan menggunakan pendekatan GraphQL. Query yang akan kita gunakan untuk mendapatkan data tersebut dan JSON response-nya akan seperti ini:
GraphQL vs REST API: Apa Bedanya? – end
Proses pengambilan data pada GraphQL API ketika membutuhkan lebih dari satu request
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
query { league(id: 4328) { strLeague strBadge teams { strTeam strBadge players { strPlayer strPhoto } } } } |
Untuk JSON Response-nya akan seperti ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
{ "data": { "league": { "strLeague": "English Premier League", "strBadge": "/i6o0kh1549879062.png", "teams": [ { "strTeam": "Arsenal", "strBadge": "/i6o0kh1549879062.png", "players": [ { "strPlayer": "Ronaldo", "strPhoto": "/i6o0kh1549879062.png" }, { "strPlayer": "Messi", "strPhoto": "/i6o0kh1549879062.png" } ] }, { "strTeam": "Aston Villa", "strBadge": "/i6o0kh1549879062.png", "players": [ { "strPlayer": "Ronaldo", "strPhoto": "/i6o0kh1549879062.png" }, { "strPlayer": "Messi", "strPhoto": "/i6o0kh1549879062.png" } ] } ] } } |
Dengan pendekatan GraphQL kita dapat mengatur ketentuan apa saja atau data yang kita butuhkan pada sebuah query. Kita jadi dapat semua data sesuai dengan kebutuhan tanpa tambahan informasi yang tak kita butuhkan. Bagaimana? Lebih efisien dan fleksibel kan jika kita mendapatkan data dengan pendekatan GraphQL.
Kesimpulan
GraphQL API menyediakan kemudahan dalam pengambilan data dan proses pengembangan yang lebih cepat. Meskipun begitu, GraphQL bukan merupakan pengganti dari REST API. Masing-masing pendekatan ini memiliki kelebihan dan kekurangannya masing-masing sesuai dengan kasus atau kebutuhan kita pada saat mengembangkan sistem.
Meskipun artikel ini hanya membahas mengenai bagaimana kedua pendekatan ini dalam mengambil data, tentunya ini akan menambah wawasan kita mengenai apa itu GraphQL dan REST API sebagai seorang developer. Menarik bukan? Mungkin di lain waktu kita dapat membahas mengenai bagaimana mengembangkan GraphQL API atau REST API secara lebih detail. Sampai jumpa dalam artikel berikutnya!