Banyak standar arsitektur sumber terbuka tersedia untuk membangun dan mendistribusikan aplikasi. REST (Representational State Transfer), SOAP (Simple Object Access Protocol), RPC (Remote Procedural Call), dan API GraphQL adalah yang paling populer.

RESTful API adalah standar arsitektur API yang paling banyak digunakan. Jika Anda telah menulis RESTful API yang rumit dengan banyak titik akhir, Anda mungkin menyadari betapa rumitnya hal itu. Ini terutama benar jika hanya ada sedikit perbedaan antara titik akhir.

Anda juga mungkin mengalami masalah dengan pengambilan data karena RESTful API tidak cukup fleksibel untuk memilih data tertentu. GraphQL memecahkan masalah RESTful API ini.

Apa itu GraphQL?

GraphQL (Graph Query Language) adalah bahasa kueri dan runtime untuk membangun API. Tidak seperti API REST dengan banyak titik akhir untuk mengonsumsi data, API GraphQL memiliki satu titik masuk. Anda dapat mengambil data tertentu dengan mendeskripsikannya dalam kueri.

Itu Spesifikasi GraphQL mendefinisikan bahasa query dan bagaimana server GraphQL beroperasi. Anda dapat membuat dan menggunakan API GraphQL dalam bahasa sisi server dari Python hingga

instagram viewer
Javascript, dan bahasa apa pun yang mendukung HTTP.

Meta membangun GraphQL pada tahun 2012 sebagai alternatif dari REST untuk membangun di HTTP. Mereka merilis GraphQL sebagai standar sumber terbuka pada tahun 2015. Saat ini, yayasan GraphQL mengawasi pengembangan spesifikasi GraphQL.

GraphQL cukup baru, dengan adopsi rendah, dan ada biaya tersembunyi untuk menggunakannya. Membangun API GraphQL bisa menjadi rumit yang tidak perlu, terutama untuk proyek kecil dengan beberapa titik akhir.

Juga, semua permintaan GraphQL pada akhirnya mengembalikan kode status 200 terlepas dari status permintaan.

Bagaimana Cara Kerja GraphQL?

Tidak seperti REST, yang berorientasi pada sumber daya, GraphQL mengharuskan Anda memikirkan data sebagai grafik untuk berinteraksi dengan data. Anda dapat menentukan struktur data, dan spesifikasi menyediakan antarmuka kueri yang kuat untuk berinteraksi dengan API melalui HTTP. Anda akan dapat menggunakan berbagai fitur tergantung pada Paket atau pustaka GraphQL Anda memilih untuk menggunakan.

Skema GraphQL menyertakan tipe objek yang menentukan objek yang dapat diminta dan bidang yang tersedia. Pada kueri dan mutasi API, paket GraphQL memvalidasi kueri dan mengeksekusi kueri berdasarkan fungsi penangan yang ditentukan (penyelesai).

Mengapa Anda Harus Menggunakan GraphQL?

REST adalah standar yang mudah digunakan, dan sebagian besar bahasa pemrograman memiliki alat untuk membuat RESTful API dengan cepat. Namun, ada banyak masalah dalam membuat dan menggunakan RESTful API.

Berikut adalah beberapa masalah dengan REST yang membuat developer lebih memilih GraphQL untuk beberapa kasus penggunaan.

Pengambilan Data Tidak Efisien

RESTful API menyampaikan data berdasarkan spesifikasi titik akhir. Mereka tidak cukup fleksibel untuk mengambil data di luar apa yang dikodekan keras dalam fungsi penangan titik akhir.

Misalkan titik akhir mengembalikan daftar data saat dipanggil, dan Anda perlu menentukan nilai atau kriteria untuk bidang. Dalam hal ini, pengembang harus membuat titik akhir dan menentukan logika bisnis untuk mengembalikan data. Anda dapat menguraikan sumber daya berharga secara manual, yang pada akhirnya membutuhkan lebih banyak waktu.

GraphQL memecahkan masalah pengambilan data yang tidak efisien karena Anda dapat meminta API untuk mengembalikan data berdasarkan kriteria dan spesifikasi secara fleksibel.

API GraphQL bersifat interaktif; Anda dapat menentukan data yang perlu diambil dengan sintaks yang mudah dibaca.

{
pengguna (di mana: {usia: {_eq: "89"}}) {
nama
sekolah(Di mana: {hidup: {_eq: benar}}) {
bio
kebangsaan
}
}
}

Kueri GraphQL di atas kueri a pengguna skema untuk entri di mana usia lapangan adalah 89. Kueri memiliki kueri tersemat untuk entri di mana hidup evaluasi lapangan BENAR. Ini mengembalikan bidang nama, bio, dan kebangsaan dari skema.

Perkembangan Cepat

Membuat dan menggunakan API GraphQL lebih mudah daripada menggunakan REST, terutama saat ukuran proyek bertambah. Selama fase pengembangan, Anda tidak perlu mengembangkan rute dan fungsi handler sebanyak yang Anda lakukan saat mengembangkan RESTful API. Mengkonsumsi GraphQL API tidak membosankan seperti RESTful API.

Di REST, titik akhir yang berbeda memberikan akses ke sumber daya yang berbeda, tidak seperti GraphQL, yang hanya memiliki satu titik akhir. Ini menghasilkan fleksibilitas dan kinerja, dan kueri dapat memanggil fungsi penyelesai yang berbeda.

Bahasa Definisi Skema GraphQL

Bahasa Definisi Skema GraphQL (SDL) menentukan skema untuk layanan GraphQL.

Sintaks GraphQL SDL mudah dibaca dan dipahami. Anda akan menentukan struktur skema Anda dalam file dengan .graphql atau .graphqls perpanjangan.

jenis Manusia {
nama: Rangkaian!
umur: Int!
}

masukan AddHuman {
nama: Rangkaian!
umur: Int!
}

jenis Mutasi {
CreateHuman (input: AddHuman!): Manusia!
DeleteHuman (id: Int!): Rangkaian!
UpdateHuman (id: Int!): Rangkaian!
}

jenis Kueri {
GetHuman (id: Int!): Manusia!
GetHumans: [Manusia!]!
}

Kode GraphQL di atas adalah skema untuk API GraphQL yang menentukan struktur API untuk permintaan. Skema menentukan fungsionalitas CRUD untuk API.

Di sisi klien, berdasarkan struktur skema dan data atau operasi klien, klien dapat mengeksekusi a pertanyaan (GET atau DELETE di REST) ​​atau a mutasi (PUT atau POST).

Berikut adalah contoh kueri Manusia skema.

kueri Manusia {
nama
usia
}

Kueri di atas akan mengembalikan skema manusia nama Dan usia data lapangan.

Mutasi GraphQL memiliki sintaks yang cukup berbeda berbeda dengan kueri. Berikut adalah contoh operasi mutasi pada Manusia skema.

mutasi {
CreateHuman (masukan:{ nama:"pria", umur: 1000000000000000,}) {
nama
usia
}
}

Input kode mutasi nama Dan usia bidang ke klien dan mengembalikan data dari bidang.

Anda memerlukan penyimpanan data untuk kegigihan saat Anda membangun API GraphQL Anda. Seperti REST dan sebagian besar arsitektur web berbasis HTTP, GraphQL tidak memiliki kewarganegaraan, dan Anda dapat menggunakan penyimpanan data atau database apa pun untuk aplikasi Anda.

Membangun API GraphQL

GraphQL adalah spesifikasinya, dan Anda dapat membangun GraphQL dalam bahasa sisi server yang paling populer. Anda harus menemukan perpustakaan dengan fitur yang Anda perlukan untuk proyek Anda.

Saat memilih pustaka GraphQL, Anda ingin menggunakan pustaka kaya fitur yang mendukung semua jenis dan operasi GraphQL. Sebagian besar perpustakaan menggunakan pendekatan skema-pertama atau kode-pertama. Yang pertama, Anda mendefinisikan skema GraphQL, dan pustaka menghasilkan kode resolver dan boilerplate. Untuk yang terakhir, Anda melakukan hard-code pada resolver tanpa menentukan skema.

GraphQL Mendapatkan Adopsi

Sejak dimulainya GraphQL, pengembang dan perusahaan telah merilis alat untuk menyederhanakan penggunaannya. Ini dapat mengurangi waktu pengembangan untuk proyek yang lebih kecil dan menengah.

Anda dapat melihat klien GraphQL sumber terbuka, dokumentasi GraphQL, dan spesifikasinya untuk mempelajari lebih lanjut.