GraphQL: apakah ini “pembunuh” REST API?
Setelah implementasi dukungan GraphQL di Parse, banyak orang yang menghubungi saya dengan beberapa pertanyaan, beberapa dari mereka mengkhawatirkan masa depan REST API.
Apakah GraphQL akan “membunuhnya”?
Apa yang akan terjadi dengan metode REST API saya? Apakah saya perlu menulis ulang kode saya?
Dalam artikel ini saya akan membahas pertanyaan-pertanyaan tersebut, tetapi jawaban singkatnya adalah: tidak, Anda tidak perlu khawatir karena GraphQL tidak akan “membunuh” REST API dan Anda juga tidak perlu khawatir untuk menulis ulang metode REST API Anda yang sudah berjalan.
Contents
- 1 Jadi, apa masalahnya dengan GraphQL?
- 2 Dan mengapa GraphQL jika REST API saya sudah berfungsi?
- 3 Apakah Anda mengatakan nilai?
- 4 Cobalah
- 5 Pembuatan versi? Untuk apa?
- 6 Kesimpulan
- 7 Akankah GraphQL Mematikan REST API?
- 8 Apa saja kesalahpahaman tentang GraphQL?
- 9 Bagaimana GraphQL membuat kode Anda tidak mudah mengalami kesalahan?
Jadi, apa masalahnya dengan GraphQL?
Satu kesalahpahaman yang dimiliki oleh kebanyakan orang yang menghubungi saya, adalah bahwa GraphQL tidak hadir untuk menggantikan seluruh backend.
GraphQL tidak akan menggantikan Backend. Tidak juga Frontend.
GraphQL adalah bahasa query, sebuah cara bagi Anda untuk menentukan informasi apa yang Anda cari pada API Anda, dan sebuah runtime yang akan mendapatkan informasi tersebut dari data yang sudah ada sebelumnya.
Ini hanyalah cara yang berbeda (cara yang lebih baik, menurut saya) untuk memberi tahu Aplikasi Anda apa yang perlu Anda ketahui dan kemudian, menerima informasi tersebut.
Anda tidak perlu khawatir dengan metode REST API yang sudah ada dan berfungsi. Metode-metode tersebut akan tetap bekerja seperti yang mereka lakukan saat ini meskipun Anda mengadopsi GraphQL. Satu-satunya hal yang perlu diperhatikan adalah bahwa GraphQL hanya berjalan pada Parse 3.5.0 dan yang lebih baru, jadi, jika Anda menggunakan Parse 2.x atau yang lebih lama, hal itu juga menyiratkan perubahan struktur kode Parse.
Jadi, jika Anda menggunakan Parse 3.0 atau lebih, Anda tidak perlu khawatir. Cukup pilih versi di atas 3.5.0 dan Anda siap menggunakannya.
Jika Anda menggunakan Parse 2.X, Anda akan memiliki beberapa pengerjaan ulang pengkodean yang harus dilakukan.
Dan mengapa GraphQL jika REST API saya sudah berfungsi?
Pertanyaan ini juga sering muncul dan saya benar-benar percaya ada beberapa keuntungan utama untuk memilih GraphQL daripada REST API.
Dalam jangka pendek, jika Anda sudah memiliki aplikasi yang ditulis menggunakan REST API dan sudah memenuhi semua kebutuhan Anda, tidak ada gunanya bermigrasi ke GraphQL dan menulis ulang kode hanya karena alasan tertentu.
Di sisi lain, jika Anda memulai sekarang atau meramalkan aplikasi yang berkembang, yang akan mendapatkan kompleksitas dan ingin siap untuk pemeliharaan yang disederhanakan di masa depan, GraphQL benar-benar dapat menambah dan memberi Anda banyak nilai.
Apakah Anda mengatakan nilai?
Ya benar.
GraphQL memiliki beberapa keunggulan utama yang akan menyederhanakan pengembangan kode, pemeliharaan dari waktu ke waktu, dan bahkan dapat membantu Anda menghemat transfer data! Ya! Anda tidak salah baca.
Mari kita bahas satu per satu:
-
Menyederhanakan Pengembangan Kode
Pada awalnya, ketika Anda memulai dengan GraphQL, Anda mungkin harus membuat lebih banyak kode. Jangan biarkan hal itu membuat Anda takut.
GraphQL akan membuat kueri Anda lebih sederhana untuk ditulis, khususnya jika Anda menggunakan Konsol GraphQL kami. Menggunakan skema yang dibuat secara otomatis oleh Parse dan menerbitkan metode umum dan khusus untuk query dan mutasi untuk semua kelas Anda akan menghemat banyak waktu. Dan maksud saya sangat banyak.
Dokumentasi? Tidak masalah. Kami juga menyediakannya. Dan itu juga dibuat secara otomatis.
Selain itu, dengan GraphQL, pengembang Anda akan dapat mengandalkan skema yang dihasilkan oleh Parse, sehingga mereka akan tahu sebelumnya metode mana yang tersedia, parameter untuk setiap metode, dan juga apa saja hasil (output) yang tersedia. Tidak perlu lagi menebak-nebak atau bertanya kepada orang lain apa yang dilakukan oleh metode tersebut, parameter apa saja yang diperlukan atau apa yang dikembalikannya. Semuanya ada di sana untuk Anda.
-
Menyederhanakan Pemeliharaan
Pemeliharaan dengan GraphQL sangatlah mudah. Karena pemanggilan ke API pada dasarnya sama, hanya mengubah kueri atau mutasi yang Anda berikan, menambah atau menghapus nilai atau parameter yang dikembalikan semudah mengubah kueri atau mutasi untuk menerima atau mengirimkannya.
Anda tidak perlu mengubah banyak panggilan, blok, atau janji. Ubah kueri atau mutasi: SELESAI!
-
Menghemat transfer data
Setelah beberapa lama bekerja di Back4app, sangat umum untuk membantu klien mengoptimalkan kode mereka untuk mendapatkan respons yang lebih cepat. Dan dari semua masalah yang saya temukan dalam kode klien, sebagian besar disebabkan oleh pengambilan data yang tidak dibutuhkan aplikasi pada saat itu.
Kesalahan yang sangat umum terjadi ketika berurusan dengan REST API atau bahkan kerangka kerja Parse adalah mengambil informasi lengkap untuk sebuah objek, dan kemudian hanya menggunakan sebagian dari informasi tersebut. Sebagai contoh:
Anda memiliki sebuah kelas bernama Person dengan beberapa properti: nama, telepon, alamat, nomor jaminan sosial, email, dan beberapa properti lainnya.
Biasanya orang yang menggunakan REST API atau Parse Frameworks mencoba untuk meminta objek Person secara lengkap, mengambil semua propertinya, dan kemudian hanya menggunakan satu atau dua di antaranya.
Dengan GraphQL, karena Anda harus menentukan dengan tepat informasi yang perlu diambil, pengembang tidak memiliki kesempatan untuk mengambil informasi yang tidak perlu, yang menghasilkan muatan yang jauh lebih kecil, dan itu diterjemahkan ke dalam respons yang lebih cepat, lebih sedikit konsumsi paket data, dan lebih sedikit lalu lintas keluar secara keseluruhan. Betapa mengagumkannya itu?
Cobalah
Cara terbaik untuk melihat manfaat yang dapat diberikan GraphQL ke dalam proses pengembangan Anda adalah dengan mencobanya.
Berikut adalah beberapa skenario yang dapat Anda mainkan dan lihat bagaimana perilakunya:
-
Cobalah untuk membuat kueri GraphQL dan tidak menentukan dengan tepat apa yang ingin Anda ambil
Anda tidak akan dapat melakukannya. Queri ini akan meminta Anda untuk menentukan apa yang Anda inginkan dan hanya akan mengambil data tersebut. Tidak ada yang lain.
Jika Anda atau pengembang Anda lupa melakukannya, GraphQL tidak akan membiarkan mereka lolos begitu saja.
Kehilangan apa yang saya ambil
Ini dia!
-
Mencoba mengubah sebuah objek menggunakan Query
Tidak bisa. Anda ingin mengubah sesuatu? Gunakan metode yang benar: Mutasi.
Jika Anda atau pengembang Anda menggunakan metode yang salah, GraphQL tidak akan mengizinkan mereka untuk melanjutkan.
Query untuk mengubah data? Tidak, tidak, tidak!
Mutasi membuat Anda tertutup!
-
Beberapa Objek. Beberapa Query? Tidak! SATU Query!
GraphQL membuatnya sangat mudah untuk mengambil informasi tentang beberapa objek hanya dengan satu query, menyederhanakan pengembangan dan membuat kode tidak terlalu rentan terhadap kesalahan.
Jadi, bayangkan Anda memiliki kelas Person dan seseorang dapat memiliki seekor anjing, dari kelas Dog. Anda perlu mengambil informasi dari kedua kelas tersebut: nama dan usia orang tersebut, serta nama dan jenis anjing. Mudah sekali:
Pembuatan versi? Untuk apa?
Kode versi adalah kode versi 2018.
Menambahkan bidang baru ke kueri Anda. Panggilan yang lama akan tetap berfungsi:
Ini berfungsi
Ini juga berfungsi. Panggilan ke jenis yang lama akan tetap berfungsi.
Kolom yang sudah tidak digunakan lagi, katamu? Mudah juga:
Kesimpulan
GraphQL tidak hadir untuk membunuh apa pun. Ia hadir untuk membawa cara baru untuk melakukan hal-hal yang lama. Lebih baik, lebih cepat, lebih ramah terhadap pemeliharaan dan lebih sedikit kesalahan.
Ini akan membuat Anda tetap berada di jalur yang benar ketika Anda tergelincir. Ini akan memberi tahu Anda apa yang bisa dan tidak bisa Anda lakukan.
Bersama dengan Parse dan metode yang dibuat secara otomatis (baik umum maupun khusus) dan dokumentasi, ini akan membuat Anda belajar dengan mudah.
Jika Anda belum pernah mencobanya, Anda harus mencobanya. Semua anak-anak keren melakukannya.
Jika Anda ingin tahu lebih banyak tentang GraphQL vs REST, lihatlah posting Medium kami.
Akankah GraphQL Mematikan REST API?
Jawaban untuk pertanyaan ini adalah “TIDAK”. Tidak akan ada masalah dengan REST API yang sudah berfungsi. API tersebut tidak akan berubah setelah migrasi ke GraphQL. Namun, ada satu pengecualian. API ini berfungsi pada Parse versi 3.5.0. Jadi, jika Anda menggunakan parse di bawah ini, Anda perlu melakukan sedikit pengodean.
Apa saja kesalahpahaman tentang GraphQL?
Berikut ini adalah beberapa kesalahpahaman utama.
– GraphQL tidak ada untuk menggantikan backend.
– GraphQL adalah alat, bukan bahasa pemrograman.
Orang-orang harus tahu bahwa GraphQL adalah bahasa query yang akan memberi tahu API Anda informasi apa yang Anda cari dan informasi apa yang akan Anda dapatkan dari datanya.
Bagaimana GraphQL membuat kode Anda tidak mudah mengalami kesalahan?
Jangan khawatir tentang baris kode tambahan yang diperlukan saat memulai dengan GraphQL. Ini akan memudahkan Anda untuk tugas-tugas di masa mendatang.
Keuntungan terbesarnya adalah Anda bisa mendapatkan informasi tentang beberapa objek hanya dengan satu kueri. Anda tidak perlu menulis kueri terpisah untuk mendapatkan informasi tentang beberapa objek. Ini akan menghemat waktu Anda sekaligus menghindarkan Anda dari kesalahan kode.