
Evolusi Cara Bertukar Data
Saat aplikasi Frontend ingin mengambil data ke Backend, ia harus menggunakan antarmuka penghubung. Selama bertahun-tahun, REST API adalah standar mutlak untuk tugas ini. Namun, seiring dengan makin kompleksnya antarmuka (UI) aplikasi modern, Facebook menciptakan alternatif baru bernama GraphQL. Apa bedanya?
Kekurangan REST API: Kaku dan Bawaan Berat
REST API bekerja dengan cara menyediakan banyak URL (*endpoints*). Misalnya, untuk menampilkan halaman Profil User lengkap dengan artikel yang dia tulis, Frontend harus melakukan hal ini:
- Memanggil
GET /users/1untuk mendapat nama dan foto profil. - Memanggil
GET /users/1/postsuntuk mendapat daftar artikelnya.
Masalah Overfetching: REST API selalu mengirimkan SEMUA data. Jika kamu memanggil data User, backend akan mengirimkan ID, Nama, Email, Umur, Alamat, dan No. HP. Padahal, Frontend saat itu HANYA butuh data "Nama" saja untuk ditampilkan di Navbar. Kuota internet pengguna terbuang sia-sia untuk mendownload data yang tidak dipakai.
Kekuatan GraphQL: Ambil Sesuai Pesanan!
GraphQL menyelesaikan masalah tersebut dengan elegan. Tidak ada banyak *endpoints*, GraphQL hanya memiliki satu titik URL (misal: POST /graphql).
Tugas Backend bukan menentukan data apa yang dikirim, tapi tugas Frontend lah yang meminta data sesuai kebutuhan spesifik mereka. GraphQL ibarat memesan makanan di prasmanan, kamu menunjuk dengan persis sayur dan lauk apa yang mau ditaruh di piringmu.
Contoh Query GraphQL dari Frontend:
query {
user(id: 1) {
nama
fotoProfil
posts {
judul
}
}
}Dengan query singkat di atas, Backend hanya akan mengembalikan data Nama, Foto Profil, dan Judul artikel dalam satu kali *request*. Tidak ada data email atau no HP yang ikut terkirim. Sangat efisien!
Apakah REST API Akan Mati?
Tentu tidak. REST API sangat mudah di-cache (disimpan sementara di memori browser), mudah dikonfigurasi, dan lebih simpel untuk aplikasi berskala kecil hingga menengah. Gunakan GraphQL HANYA jika aplikasimu sekelas Facebook atau Tokopedia di mana efisiensi *bandwidth* dan kompleksitas relasi data menjadi masalah kritis.
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates