Baru-baru ini saya belajar tentang GraphQL yang mengklaim lebih unggul dari RESTful. Namun, saya mulai bertanya-tanya mengapa kita tidak meletakkan pernyataan SQL ke dalam permintaan HTTP GET.
Sebagai contoh, di GraphQL saya akan menulis
{
Movie(id: "cixos5gtq0ogi0126tvekxo27") {
id
title
actors {
name
}
}
}
Yang tidak jauh lebih sederhana daripada rekan SQL-nya
SELECT id, title FROM movies WHERE id = cixos5gtq0ogi0126tvekxo27;
SELECT actors.name FROM actors, actors_movies WHERE actors.id == movies.actor_id AND movie.id == cixos5gtq0ogi0126tvekxo27;
Mungkin kita dapat menyandikan URL kueri dan mengirim ke server
GET endpoint?q=SELECT%20id%2C%20title%20FROM%20movies%20WHERE%20id%20%3D%20cixos5gtq0ogi0126tvekxo27%3B%0ASELECT%20actors.name%20FROM%20actors%2C%20actors_movies%20WHERE%20actors.id%20%3D%3D%20movies.actor_id%20AND%20movie.id%20%3D%3D%20cixos5gtq0ogi0126tvekxo27%3B HTTP/1.1
Ya, URL kueri bisa terlalu panjang, tetapi Anda bisa memasukkannya ke dalam tubuh permintaan POST jika Anda tidak peduli dengan kepatuhan REST. (Omong-omong, saya pikir HTTP RFC perlu direvisi agar REST masuk akal: membatasi panjang string query mencampur implementasi dengan spesifikasi di awal)
Mengeluarkan SQL secara langsung dari klien juga memiliki kelebihan
- Tidak ada kode / pustaka sisi server yang diperlukan untuk mengurai GraphQL, mengurangi waktu pengembangan.
- Tidak diperlukan overhead sisi server untuk mem-parsing GraphQL, mengurangi runtime.
- Pernyataan SQL jauh lebih fleksibel daripada GraphQL karena (dalam kebanyakan kasus) yang terakhir akan mengurangi menjadi SQL.
- Semua orang tahu SQL.
Jadi, apa kelebihan GraphQL dibandingkan SQL?