Apa itu GraphQL?
GraphQL adalah cara alternatif untuk berkomunikasi dengan API yang sangat cocok untuk struktur data yang kompleks dan membangun antarmuka di atasnya. Tidak seperti menganggap data sebagai potongan terpisah dan mandiri, GraphQL menunjukkan bagaimana potongan data terhubung dan berhubungan satu sama lain, sehingga mudah untuk meminta dan menerima informasi.
Pikirkan GraphQL sebagai bahasa query yang memungkinkan Anda berbicara dengan API seolah-olah Anda berbicara langsung dengan database. Menggunakan GraphQL memungkinkan Anda untuk sedekat mungkin dengan database, memungkinkan Anda memilih dan memilih data apa yang ingin Anda dapatkan dan bagaimana cara mendapatkannya, memberikan keuntungan performa yang sangat besar.
GraphQL dibuat oleh Facebook untuk mengatasi masalah penskalaan dengan struktur data yang kompleks. Sebagai hasil dari adopsi mereka yang sukses, semakin banyak perusahaan yang mulai menyadari manfaat menggunakan GraphQL untuk API mereka.
Sudah tahu REST? GraphQL akan terasa familiar.
API GraphQL lebih mudah digunakan daripada yang mungkin Anda pikir. Jika Anda terbiasa bekerja dengan REST API, berikut ini cara konsep inti dari REST diterjemahkan ke GraphQL.
| Fitur↕ | REST↕ | GraphQL↕ |
|---|---|---|
| Endpoint | Permintaan dibuat ke beberapa endpoint untuk tindakan yang berbeda | Semua permintaan dibuat ke satu endpoint (misalnya, /graphql) |
| Pengambilan data | Gunakan metode GET di endpoint spesifik untuk mengambil data | Gunakan query untuk meminta data yang diperlukan dengan tepat, mengurangi over-fetching atau under-fetching |
| Modifikasi/tindakan data | Gunakan metode HTTP seperti POST, PUT, PATCH, atau DELETE untuk memodifikasi atau memproses data. | Gunakan mutation untuk melakukan operasi (misalnya, membuat pihak, menghitung biaya darat) |
| Format respons | Format respons tetap mengembalikan semua bidang yang telah ditentukan, terlepas dari apakah diperlukan | Respons fleksibel memungkinkan menentukan dengan tepat bidang mana yang akan disertakan, mengurangi transfer data yang tidak perlu (Jika fleksibilitas ini terasa rumit, gunakan saja contoh query yang telah ditulis sebelumnya dalam dokumentasi kami untuk pengalaman yang mirip REST) |
| Koneksi data | Beberapa permintaan sering diperlukan untuk mengambil data terkait | Query bersarang memungkinkan pengambilan data terkait dalam satu permintaan (misalnya, detail pihak dan item pengiriman bersama-sama). Pengguna juga dapat membangun alur kerja untuk mengelola mutasi beberapa dalam satu permintaan GraphQL, mengurangi kompleksitas dan meningkatkan efisiensi |
Keuntungan GraphQL
Respons yang lebih cepat
GraphQL menyediakan respons yang lebih cepat melalui pengambilan data yang presisi, penggunaan satu endpoint, dan kemampuan yang ditingkatkan untuk batching dan caching.
Pengambilan data yang presisi
Tantangan umum dengan REST adalah over-fetching atau under-fetching data—baik mendapatkan terlalu banyak informasi yang tidak perlu atau tidak cukup dari yang diperlukan sekaligus. GraphQL menghilangkan ini dengan memungkinkan permintaan untuk hal-hal yang tepat diperlukan—tidak lebih, tidak kurang. Spesifisitas ini tidak hanya meningkatkan performa tetapi juga menyederhanakan proses bagi mereka yang berinteraksi dengan API, membuat sistem lebih efisien dan user-friendly.
Contoh cara ini berguna:
- Ini memungkinkan developer frontend untuk mengambil data yang tepat mereka butuhkan untuk komponen UI mereka, mengurangi jumlah round trip ke server dan meningkatkan performa.
- Bayangkan Anda ingin mendapatkan klasifikasi kode HS, cartonization, rating pengiriman, dan penawaran biaya darat pada item dalam checkout. Jika Anda terintegrasi melalui GraphQL API, Anda dapat membuat satu panggilan dengan alur kerja yang diperlukan untuk mendapatkan semuanya yang Anda butuhkan (dan bukan yang Anda tidak butuhkan) dalam satu respons. Sebaliknya, dengan REST API, Anda harus terlebih dahulu memanggil Classify REST API, kemudian memanggil Rating REST API secara terpisah setelahnya, dan akhirnya masukkan klasifikasi dan rating pengiriman itu ke dalam panggilan ketiga Anda ke Landed Cost REST API. Semua REST API ini akan mengembalikan setiap informasi yang bisa mereka keluarkan, menyebabkan Anda harus memilah-milah respons untuk data yang Anda butuhkan. Penghematan kecepatan ini berdampak pada pengembalian biaya darat yang lengkap dengan cepat, sebelum pembeli pergi.
Endpoint tunggal
API GraphQL biasanya memiliki satu endpoint, tidak seperti REST API yang sering memiliki beberapa endpoint untuk sumber daya dan tindakan yang berbeda. Ini membuat lebih sederhana untuk mengelola dan memahami API.
Batching dan caching
Kemampuan GraphQL untuk batch query dan dukungannya untuk strategi caching menyebabkan peningkatan performa yang signifikan. Fitur-fitur ini mengurangi beban pada jaringan dan server, diterjemahkan ke interaksi yang lebih cepat dan lebih dapat diandalkan untuk pengguna.
Skema yang terdefinisi dengan baik
API GraphQL didasarkan pada skema yang sangat diketik. Skema ini mendefinisikan struktur data yang tersedia dan operasi yang dapat dilakukan. Ini memberikan kejelasan tentang data apa yang tersedia dan cara mengaksesnya, yang dapat meningkatkan produktivitas developer dan mengurangi kesalahan. Sebagai contoh, tim frontend dapat mengeksplorasi graph untuk mendapatkan dengan tepat apa yang mereka butuhkan daripada menunggu endpoint REST baru.
Kemampuan untuk meningkatkan tanpa memecahkan klien yang ada
Menambahkan fitur baru atau memodifikasi yang ada di GraphQL tidak mengganggu integrasi saat ini, berkat struktur query fleksibel-nya. Kemampuan ini memastikan bahwa peningkatan dapat dibuat tanpa merusak kompatibilitas dengan klien yang ada.
Dokumentasi yang up-to-date
Berkat fitur introspeksi GraphQL, dokumentasi secara otomatis dihasilkan dan diperbarui dengan setiap perubahan. Ini memastikan bahwa semua informasi yang diberikan kepada developer adalah terkini, mengurangi masalah integrasi dan tiket dukungan yang terkait dengan dokumentasi yang sudah usang—tantangan yang biasa dihadapi dengan dokumentasi REST API.
Tinjau dokumentasi GraphQL dan dokumentasi REST kami untuk melihat perbedaannya.
Sebuah analogi
Bayangkan Anda berada di restoran dengan menu yang memungkinkan Anda memesan hidangan persis seperti yang Anda inginkan, dibandingkan dengan restoran lain tempat Anda hanya dapat memilih dari hidangan set. GraphQL seperti restoran pertama:
- Dapatkan persis apa yang Anda inginkan: Dengan GraphQL, Anda dapat meminta data yang tepat Anda butuhkan, tidak lebih, tidak kurang. Bayangkan Anda hanya menginginkan nama dan harga hidangan, bukan seluruh daftar bahan. Dengan REST API, Anda harus mendapatkan detail hidangan lengkap dan mengabaikan bagian yang tidak Anda butuhkan.
- Susun hidangan khusus: API GraphQL kami dapat dengan mudah digabungkan untuk membuat solusi yang lebih khusus, mirip dengan restoran gaya buffet tempat Anda dapat membuat hidangan yang unik persis seperti yang Anda butuhkan, menggunakan bahan yang sudah mereka miliki. Sebaliknya, REST API seperti toko roti dengan barang pra-buat yang dikemas dalam keranjang—Anda hanya dapat memesan apa yang sudah dibuat dan Anda tidak dapat memilih untuk membawa pulang hanya bagian yang ingin Anda ambil.
- Menunggu lebih sedikit: Karena Anda dapat memperoleh semua informasi yang Anda butuhkan dalam satu permintaan, seolah-olah meminta server Anda untuk membawa appetizer, kursus utama, dan dessert semuanya sekaligus, daripada menunggu di antara kursus. Sebagian besar REST API memerlukan Anda mengirim beberapa permintaan untuk mendapatkan potongan informasi yang berbeda.
- Mudah mengubah pesanan: Jika kebutuhan data aplikasi Anda berubah, GraphQL memudahkan untuk menyesuaikan. Anda hanya mengubah query untuk apa yang Anda butuhkan. Dengan REST, Anda mungkin perlu menunggu dapur (backend) untuk membuat makanan baru (endpoint) untuk menu, yang membutuhkan lebih banyak waktu.
GraphQL menawarkan lebih banyak fleksibilitas, efisiensi, dan kesederhanaan untuk mengambil data dibandingkan REST API, terutama ketika kebutuhan Anda berubah atau berkembang.
Bagaimana Zonos menggunakan GraphQL
Saat modernisasi platform kami selama beberapa tahun terakhir, Zonos telah membuat pilihan untuk membangun fungsionalitas baru menggunakan GraphQL untuk API kami daripada REST. Kami memutuskan melakukan ini karena data kami kompleks dan saling terhubung, seperti data yang menyebabkan Facebook membuat GraphQL. Kompleksitas ini membuat tantangan untuk membangun REST API yang dapat diskalakan karena cara developer perlu mengambil dan menggunakan data bervariasi secara drastis antara implementasi, dan REST tidak fleksibel.
GraphQL dengan rapi mengatasi masalah ini dengan memungkinkan developer yang mengimplementasikan API kami untuk memilih dan memilih data yang tepat mereka inginkan dan bagaimana mereka mendapatkannya. Ini memungkinkan mereka untuk menyesuaikannya ke dalam alur kerja mereka tanpa Zonos perlu melakukan pekerjaan khusus (sementara mereka menunggu) untuk setiap situasi.
Hasil gabungan dari menggunakan GraphQL dan modernisasi dalam platform kami telah membuat API kami lebih berperforma, 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 end-of-life dan tidak dapat mengakses banyak fitur baru kami.
Contoh fitur terbatas pada GraphQL:
- Inclusive Pricing
- Labels API
- Checkout dan Hello baru
- Ukuran kotak dalam respons API
- Dashboard reporting
- Kemampuan untuk meminta penawaran DDP jika memungkinkan, tetapi tetap mengembalikan penawaran DDU jika DDP tidak tersedia untuk negara tersebut dengan tingkat layanan itu
- Rincian terperinci dari bea, pajak, dan biaya (informasi tingkat item, biaya tertentu)—Dashboard didukung oleh GraphQL dan menampilkan data ini untuk semua toko, tetapi respons REST API tidak termasuk tingkat detail ini
- Test mode (akan datang)
Mengapa GraphQL
Temukan mengapa kami merekomendasikan integrasi melalui GraphQL dibandingkan REST.
Di Zonos, kami menawarkan dua jenis API utama untuk integrasi: GraphQL dan REST. Meskipun REST API sudah ada lebih lama dan mungkin lebih familiar bagi 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 canggih untuk memenuhi kebutuhan Anda hari ini.