Mengenal GraphQL (Query Language) dengan Cara Sederhana

berkenalan dengan Apa itu GraphQL

GraphQL adalah bahasa untuk meminta data (Query Language) sekaligus sebuah runtime yang memungkinkan aplikasi mengambil data yang benar-benar dibutuhkan. Sederhananya, GraphQL seperti memesan makanan di restoran. Kamu hanya memilih menu yang ingin dimakan, bukan menerima seluruh isi dapur.

Teknologi ini pertama kali dikembangkan oleh Facebook pada tahun 2012 dan kemudian menjadi proyek open source pada tahun 2015. Saat ini GraphQL banyak digunakan oleh perusahaan besar seperti GitHub, Shopify, Airbnb, dan lainnya.


Apa Itu GraphQL?

Bayangkan kamu pergi ke perpustakaan dan hanya membutuhkan satu buku tentang dinosaurus.

Jika menggunakan cara lama (REST API), petugas mungkin memberikan:

  • Daftar semua buku.
  • Data semua penulis.
  • Daftar seluruh kategori.
  • Informasi perpustakaan.

Padahal kamu hanya ingin satu buku.

Nah, GraphQL memungkinkan kamu mengatakan:

"Tolong berikan judul buku, nama penulis, dan tahun terbitnya saja."

Server hanya mengirim data tersebut tanpa tambahan yang tidak diperlukan.


Mengapa GraphQL Dibuat?

REST API sering menghadapi dua masalah utama:

  • Over-fetching → menerima data terlalu banyak.
  • Under-fetching → harus meminta data berkali-kali ke endpoint berbeda.

GraphQL hadir untuk mengatasi kedua masalah tersebut dengan memberikan kontrol penuh kepada client dalam memilih data yang diinginkan.


Bagaimana Cara Kerja GraphQL?

Secara sederhana alurnya seperti berikut:

  1. Client mengirim Query.
  2. Server membaca Query.
  3. Server mengambil data yang diperlukan.
  4. Server mengembalikan hasil sesuai permintaan.

Tidak lebih dan tidak kurang.


Komponen Utama GraphQL

1. Query

Digunakan untuk mengambil data.

{
  user(id: 1) {
    name
    email
  }
}

Hasilnya:

{
  "data": {
    "user": {
      "name": "Andi",
      "email": "andi@email.com"
    }
  }
}

2. Mutation

Digunakan untuk menambah, mengubah, atau menghapus data.

mutation {
  createUser(name: "Budi") {
    id
    name
  }
}

3. Subscription

Digunakan ketika data berubah secara real-time, misalnya aplikasi chat, notifikasi, atau harga saham.


Istilah Penting dalam GraphQL

Istilah Penjelasan
Query Meminta data.
Mutation Mengubah data.
Subscription Menerima pembaruan data secara langsung.
Schema Blueprint seluruh data GraphQL.
Resolver Fungsi yang mengambil data.
Type Bentuk atau struktur data.
Field Properti dalam sebuah objek.
Argument Parameter pada Query.
Variable Nilai yang dikirim dari aplikasi.
Fragment Potongan Query yang bisa digunakan ulang.

Contoh Query Sederhana

{
  product(id: 5) {
    name
    price
    stock
  }
}

Server hanya mengirim tiga field tersebut.


Perbedaan GraphQL dan REST API

GraphQL REST API
Satu endpoint Banyak endpoint
Client memilih data Server menentukan data
Mengurangi over-fetching Sering over-fetching
Struktur fleksibel Struktur tetap
Cocok untuk aplikasi kompleks Cocok untuk API sederhana

Kelebihan GraphQL

  • Mengambil data sesuai kebutuhan.
  • Lebih hemat bandwidth.
  • Hanya menggunakan satu endpoint.
  • Dokumentasi schema lebih jelas.
  • Mudah digunakan untuk aplikasi mobile.
  • Mengurangi jumlah request ke server.
  • Mudah dikembangkan seiring pertumbuhan aplikasi.

Kekurangan GraphQL

  • Kurva belajar lebih tinggi dibanding REST.
  • Query yang terlalu kompleks dapat membebani server.
  • Caching lebih rumit.
  • Membutuhkan desain schema yang baik.

Kapan Sebaiknya Menggunakan GraphQL?

GraphQL sangat cocok apabila:

  • Membangun aplikasi mobile.
  • Membuat dashboard dengan banyak data.
  • Mengembangkan aplikasi React, Vue, atau Angular.
  • Memiliki banyak sumber data.
  • Membutuhkan fleksibilitas tinggi dalam mengambil data.

REST API masih menjadi pilihan yang baik untuk aplikasi sederhana atau layanan yang hanya menyediakan beberapa endpoint dengan struktur data tetap.


Contoh Analogi GraphQL

Bayangkan kamu pergi ke toko roti.

Dengan REST, kamu membeli satu paket berisi:

  • Roti
  • Susu
  • Telur
  • Keju
  • Mentega

Padahal kamu hanya ingin roti.

Dengan GraphQL, kamu cukup berkata:

"Saya ingin satu roti saja."

Penjual memberikan tepat satu roti tanpa barang lain. Itulah konsep utama GraphQL: meminta hanya data yang diperlukan.


Kesimpulan

GraphQL adalah bahasa query modern yang membantu aplikasi mengambil data secara lebih efisien dibandingkan pendekatan tradisional seperti REST API. Dengan konsep "ambil hanya yang dibutuhkan", GraphQL dapat mengurangi penggunaan bandwidth, mempercepat proses pengambilan data, dan memberikan fleksibilitas lebih besar kepada pengembang.

Meskipun membutuhkan waktu untuk dipelajari, GraphQL menjadi pilihan populer dalam pengembangan aplikasi modern karena mampu menangani kebutuhan data yang kompleks dengan lebih sederhana dan terstruktur.

Diskusi & Komentar