GraphQL
GraphQL adalah bahasa query dan model eksekusi untuk API. Awalnya dikembangkan Facebook, kini GraphQL merupakan standar terbuka. Client memilih field yang dibutuhkan dari schema bertipe, lalu server menjalankan resolver untuk mengambil datanya.
Cara kerja
Implementasi HTTP umumnya memakai satu endpoint, seperti /graphql. Client mengirim operasi berikut:
- Query: membaca data.
- Mutation: mengubah data.
- Subscription: menerima pembaruan saat event terjadi.
Contoh query berikut hanya meminta nama produk, jika field tersebut tersedia dalam schema:
query {
product(id: "42") {
name
}
}
Schema menentukan field, tipe, dan operasi yang tersedia. GraphQL bukan database dan tidak mewajibkan transport HTTP.
Kapan berguna
GraphQL cocok ketika beberapa client membutuhkan bentuk data berbeda atau satu tampilan mengambil banyak data yang saling berhubungan. Pemilihan field dapat mengurangi over-fetching (data berlebih) dan under-fetching (data belum cukup).
Dibanding REST, GraphQL memberi client lebih banyak kendali atas bentuk response. Namun, GraphQL tidak otomatis lebih cepat atau lebih sederhana. REST tetap memadai untuk banyak API berbasis resource.
Batasan
- Query fleksibel tetap perlu pagination dan pembatasan biaya agar tidak membebani server.
- Resolver dapat memicu N plus one problem; satu request API tidak berarti satu query database.
- Schema bertipe tidak menggantikan authorization. Client juga perlu memeriksa
errorsdalam response, bukan hanya status HTTP.