GraphQL: Alternatif untuk REST di HTTP

GraphQL: Alternatif untuk REST di HTTP

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





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





VIDEO MAKEUSEOF HARI INI

Anda mungkin juga 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 waktu proses untuk membangun API. Tidak seperti REST API dengan banyak titik akhir untuk mengkonsumsi data, GraphQL API memiliki satu titik masuk. Anda dapat mengambil data tertentu dengan menjelaskannya dalam kueri.

Itu Spesifikasi GraphQL mendefinisikan bahasa query dan bagaimana server GraphQL beroperasi. Anda dapat membangun dan menggunakan GraphQL API dalam bahasa sisi server dari Python hingga Javascript , dan bahasa apa pun yang mendukung HTTP.



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

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





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

Bagaimana GraphQL Bekerja?

  GrafikQL's functions and syntax

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 mencakup tipe objek yang mendefinisikan objek yang dapat diminta dan bidang yang tersedia. Pada kueri dan mutasi API, paket GraphQL memvalidasi kueri dan mengeksekusi kueri berdasarkan fungsi pengendali (resolver) yang ditentukan.

Mengapa Anda Harus Menggunakan GraphQL?

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

lupa password administrator windows xp professional

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

Pengambilan Data Tidak Efisien

RESTful API merelai data berdasarkan spesifikasi titik akhir. Mereka tidak cukup fleksibel untuk mengambil data di luar apa yang dikodekan dalam fungsi handler dari 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 mengurai sumber daya yang 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.

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

{ 
user(where: {age: {_eq: "89"}}) {
name
school(where: {alive: {_eq: true}}) {
bio
nationality
}
}
}

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

Pengembangan Cepat

Membangun dan menggunakan GraphQL API lebih mudah daripada menggunakan REST, terutama karena ukuran proyek meningkat. Selama fase pengembangan, Anda tidak perlu mengembangkan sebanyak mungkin rute dan fungsi handler 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, di mana ada satu titik akhir. Ini menghasilkan fleksibilitas dan kinerja, dan kueri dapat memanggil fungsi resolver yang berbeda.

Bahasa Definisi Skema GraphQL

GraphQL Schema Definition Language (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.

type Human { 
name: String!
age: Int!
}

input AddHuman {
name: String!
age: Int!
}

type Mutation {
CreateHuman(input: AddHuman!): Human!
DeleteHuman(id: Int!): String!
UpdateHuman(id: Int!): String!
}

type Query {
GetHuman(id: Int!): Human!
GetHumans: [Human!]!
}

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

cara menelepon tanpa id penelepon

Di sisi klien, berdasarkan struktur skema dan data atau operasi klien, klien dapat mengeksekusi a pertanyaan (DAPATKAN atau HAPUS dalam REST) ​​atau a mutasi (PUT atau POST).

Berikut ini contoh kueri Manusia skema.

query Human { 
name
age
}

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

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

mutation { 
CreateHuman(input:{ name:"man", age:1000000000000000,}) {
name
age
}
}

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

Anda akan memerlukan penyimpanan data untuk kegigihan saat Anda membangun GraphQL API. 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

  Bahasa yang Didukung GraphQL

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

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

GraphQL Mendapatkan Adopsi

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

Anda dapat melihat klien GraphQL open-source, dokumentasi GraphQL, dan spesifikasinya untuk mempelajari lebih lanjut.