Apa itu GraphQL?
GraphQL adalah cara alternatif untuk berkomunikasi dengan API yang sangat cocok untuk struktur data yang kompleks dan membangun antarmuka di atasnya. Berbeda dengan memperlakukan data sebagai bagian yang terpisah dan mandiri, GraphQL menunjukkan bagaimana bagian data terhubung dan saling terkait, sehingga memudahkan untuk meminta dan menerima informasi.
Anggaplah GraphQL sebagai bahasa kueri yang memungkinkan Anda berbicara dengan API seolah-olah Anda berbicara langsung dengan database. Menggunakan GraphQL memungkinkan Anda mendekati database sebanyak mungkin, memungkinkan Anda memilih dan memilih data apa yang Anda inginkan dan bagaimana Anda mendapatkannya, memberikan manfaat kinerja yang besar.
GraphQL diciptakan oleh Facebook untuk mengatasi masalah skala dengan struktur data yang kompleks. Sebagai hasil dari adopsi mereka yang sukses, semakin banyak perusahaan mulai menyadari manfaat menggunakan GraphQL untuk API mereka.
Perbedaan utama dari REST
API GraphQL lebih mudah digunakan daripada yang Anda pikirkan. Jika Anda terbiasa bekerja dengan API REST, berikut adalah perbedaan mendasar yang perlu diingat:
Fitur | REST | GraphQL |
---|---|---|
Endpoint | Permintaan dilakukan ke beberapa endpoint untuk tindakan yang berbeda | Semua permintaan dilakukan ke satu endpoint (misalnya, /graphql) |
Pengambilan data | Gunakan metode GET pada endpoint tertentu untuk mengambil data | Gunakan kueri untuk meminta tepat data yang dibutuhkan, mengurangi pengambilan data berlebih atau kurang |
Modifikasi data/tindakan | Gunakan metode HTTP seperti POST, PUT, PATCH, atau DELETE untuk memodifikasi atau memproses data. | Gunakan mutasi untuk melakukan operasi (misalnya, membuat pihak, menghitung biaya yang ditanggung) |
Format respons | Format respons tetap mengembalikan semua bidang yang telah ditentukan sebelumnya, terlepas dari apakah mereka diperlukan | Respons fleksibel memungkinkan spesifikasi tepat bidang yang akan disertakan, mengurangi transfer data yang tidak perlu |
Koneksi data | Beberapa permintaan sering diperlukan untuk mengambil data terkait | Kueri bersarang memungkinkan pengambilan data terkait dalam satu permintaan (misalnya, detail pihak dan item pengiriman bersama). Pengguna juga dapat membangun alur kerja untuk mengelola beberapa mutasi dalam satu permintaan GraphQL, mengurangi kompleksitas dan meningkatkan efisiensi |
Keuntungan GraphQL
Respons lebih cepat
GraphQL memberikan respons lebih cepat melalui pengambilan data yang tepat, penggunaan satu endpoint, dan kemampuan yang ditingkatkan untuk pengelompokan dan caching.
Pengambilan data yang tepat
Tantangan umum dengan REST adalah pengambilan data berlebih atau kurang—baik mendapatkan terlalu banyak informasi yang tidak perlu atau tidak cukup dari yang dibutuhkan dalam satu kali permintaan. GraphQL menghilangkan ini dengan memungkinkan permintaan untuk tepat apa yang dibutuhkan—tidak lebih, tidak kurang. Spesifikasi ini tidak hanya meningkatkan kinerja tetapi juga menyederhanakan proses bagi mereka yang berinteraksi dengan API, menjadikan sistem lebih efisien dan ramah pengguna.
Contoh bagaimana ini berguna:
- Ini memungkinkan pengembang frontend untuk mengambil tepat data yang mereka butuhkan untuk komponen UI mereka, mengurangi jumlah perjalanan bolak-balik ke server dan meningkatkan kinerja.
- Bayangkan Anda ingin mendapatkan klasifikasi kode HS, kartonisasi, penilaian pengiriman, dan kutipan landed cost pada item dalam checkout. Jika Anda terintegrasi melalui API GraphQL, Anda dapat melakukan satu panggilan dengan alur kerja yang diperlukan untuk mendapatkan semua yang Anda butuhkan (dan tidak ada yang tidak Anda butuhkan) dalam satu respons. Sebaliknya, dengan API REST, Anda harus terlebih dahulu memanggil Classify REST API, kemudian memanggil Rating REST API secara terpisah setelahnya, dan akhirnya menyisipkan klasifikasi dan penilaian pengiriman itu ke dalam panggilan ketiga Anda ke Landed Cost REST API. Semua API REST ini akan mengembalikan setiap informasi yang mereka bisa, menyebabkan Anda harus mem-parsing respons untuk data yang Anda butuhkan. Penghematan dalam kecepatan ini berdampak pada pengembalian landed cost yang lengkap dengan cepat, sebelum pembeli pergi.
Satu endpoint
API GraphQL biasanya memiliki satu endpoint, tidak seperti API REST yang sering memiliki beberapa endpoint untuk sumber daya dan tindakan yang berbeda. Ini membuatnya lebih sederhana untuk dikelola dan dipahami.
Pengelompokan dan caching
Kemampuan GraphQL untuk mengelompokkan kueri dan dukungannya untuk strategi caching menghasilkan peningkatan kinerja yang signifikan. Fitur-fitur ini mengurangi beban pada jaringan dan server, yang berarti interaksi yang lebih cepat dan lebih dapat diandalkan bagi pengguna.
Skema yang terdefinisi dengan baik
API GraphQL didasarkan pada skema yang bertipe kuat. Skema ini mendefinisikan struktur data yang tersedia dan operasi yang dapat dilakukan. Ini memberikan kejelasan tentang data apa yang tersedia dan bagaimana cara mengaksesnya, yang dapat meningkatkan produktivitas pengembang dan mengurangi kesalahan. Misalnya, tim frontend dapat menjelajahi grafik untuk mendapatkan tepat apa yang mereka butuhkan alih-alih menunggu endpoint REST baru.
Kemampuan untuk meningkatkan tanpa merusak klien yang ada
Menambahkan fitur baru atau memodifikasi yang sudah ada di GraphQL tidak mengganggu integrasi saat ini, berkat struktur kueri yang fleksibel. Kemampuan ini memastikan bahwa perbaikan dapat dilakukan tanpa merusak kompatibilitas dengan klien yang ada.
Dokumentasi yang selalu diperbarui
Berkat fitur introspeksi GraphQL, dokumentasi secara otomatis dihasilkan dan diperbarui dengan setiap perubahan. Ini memastikan bahwa semua informasi yang diberikan kepada pengembang adalah terkini, mengurangi masalah integrasi dan tiket dukungan terkait dokumentasi yang sudah usang—sebuah tantangan yang sering dihadapi dengan dokumentasi API REST.
Tinjau dokumentasi GraphQL kami dan dokumentasi REST kami untuk melihat perbedaannya.
Analogi
Bayangkan Anda berada di restoran dengan menu yang memungkinkan Anda memesan hidangan persis seperti yang Anda inginkan, dibandingkan dengan restoran lain di mana Anda hanya dapat memilih dari hidangan tetap. GraphQL seperti restoran pertama:
- Dapatkan persis apa yang Anda inginkan: Dengan GraphQL, Anda dapat meminta persis data yang Anda butuhkan, tidak lebih, tidak kurang. Bayangkan Anda hanya ingin nama dan harga hidangan, bukan seluruh daftar bahan. Dengan REST API, Anda harus mendapatkan seluruh detail hidangan dan mengabaikan bagian yang tidak Anda butuhkan.
- Susun hidangan kustom: API GraphQL kami dapat dengan mudah digabungkan untuk menciptakan solusi yang lebih kustom, mirip dengan restoran gaya prasmanan di mana Anda dapat membuat hidangan unik persis seperti yang Anda butuhkan, menggunakan bahan yang sudah mereka miliki. Sebaliknya, REST API seperti toko roti dengan barang-barang yang sudah jadi dikemas dalam keranjang—Anda hanya dapat memesan apa yang sudah dibuat dan Anda tidak dapat memilih untuk membawa pulang hanya bagian yang Anda inginkan.
- Kurang menunggu: Karena Anda dapat mendapatkan semua informasi yang Anda butuhkan dalam satu permintaan, ini seperti meminta pelayan Anda untuk membawa pembuka selera, hidangan utama, dan pencuci mulut sekaligus, daripada menunggu di antara hidangan. Sebagian besar REST API mengharuskan Anda mengirim beberapa permintaan untuk mendapatkan berbagai informasi.
- Mudah mengubah pesanan: Jika kebutuhan data aplikasi Anda berubah, GraphQL memudahkan untuk menyesuaikan. Anda hanya perlu mengubah kueri untuk apa yang Anda butuhkan. Dengan REST, Anda mungkin perlu menunggu dapur (backend) untuk membuat hidangan baru (endpoint) untuk menu, yang memakan waktu lebih lama.
GraphQL menawarkan lebih banyak fleksibilitas, efisiensi, dan kesederhanaan untuk mengambil data dibandingkan REST API, terutama saat kebutuhan Anda berubah atau berkembang.
Bagaimana Zonos menggunakan GraphQL
Saat memodernisasi platform kami selama beberapa tahun terakhir, Zonos telah memilih untuk membangun fungsionalitas baru menggunakan GraphQL untuk API kami daripada REST. Kami memutuskan untuk melakukan ini karena data kami kompleks dan saling terkait, mirip dengan data yang mendorong Facebook untuk menciptakan GraphQL. Kompleksitas ini membuat sulit untuk membangun REST API yang dapat diskalakan karena cara pengembang perlu mengambil dan menggunakan data bervariasi secara dramatis antara implementasi, dan REST tidak fleksibel.
GraphQL dengan rapi menyelesaikan masalah ini dengan memungkinkan pengembang yang menerapkan API kami untuk memilih dan memilih persis data yang mereka inginkan dan bagaimana mereka mendapatkannya. Ini memungkinkan mereka untuk menyesuaikannya dengan alur kerja mereka tanpa Zonos perlu melakukan pekerjaan kustom (sementara mereka menunggu) untuk setiap situasi.
Hasil gabungan dari penggunaan GraphQL dan modernisasi di platform kami telah membuat API kami lebih berkinerja, membuat integrasi Zonos ke dalam sistem Anda lebih cepat, dan memungkinkan Zonos untuk memberikan fitur baru lebih cepat.
Fitur yang lebih baik
Zonos terus mengembangkan fitur baru, dan GraphQL adalah yang pertama (dan biasanya satu-satunya) yang menerima pembaruan ini. Sebaliknya, REST API kami dianggap sudah tidak aktif dan tidak dapat mengakses banyak fitur baru kami.
Contoh fitur yang terbatas pada GraphQL:
- Inclusive pricing
- API Label
- Checkout dan Hello baru
- Ukuran kotak dalam respons API
- Pelaporan dasbor
- Kemampuan untuk meminta kutipan DDP jika memungkinkan, tetapi tetap mengembalikan kutipan DDU jika DDP tidak tersedia untuk negara tersebut dengan tingkat layanan itu
- Rincian terperinci tentang bea, pajak, dan biaya (informasi tingkat item, biaya spesifik)—Dasbor didukung oleh GraphQL dan menunjukkan data ini untuk semua toko, tetapi respons REST API tidak menyertakan tingkat detail ini
- Mode uji (segera hadir)
Mengapa GraphQL
Temukan mengapa kami merekomendasikan integrasi melalui GraphQL dibandingkan REST.
Di Zonos, kami menawarkan dua jenis utama API untuk integrasi: GraphQL dan REST. Meskipun API REST telah ada lebih lama dan mungkin lebih dikenal oleh banyak orang, kami telah beralih ke GraphQL untuk memberikan lebih banyak fleksibilitas dan inovasi yang lebih cepat. Meskipun keduanya masih didukung, panduan ini menjelaskan mengapa GraphQL bukan hanya masa depan integrasi kami tetapi juga masa depan integrasi secara umum dan alat yang lebih kuat untuk memenuhi kebutuhan Anda saat ini.