Apa Itu GraphQL dan Perbedaannya dengan REST API?

By Rizky Kurniawan - April 3, 2026 ~6 mins read

Halo, selamat datang di Ruang Developer Blog. Jika kamu sudah familiar dengan REST API, mungkin kamu pernah mendengar tentang GraphQL. Teknologi ini semakin populer belakangan ini dan banyak digunakan oleh perusahaan-perusahaan besar. Lalu apa sebenarnya GraphQL itu? Dan apa bedanya dengan REST API yang sudah kita kenal? Mari kita bahas.

Apa itu GraphQL?

GraphQL adalah bahasa query untuk API dan runtime untuk menjalankan query tersebut dengan data yang sudah ada. GraphQL dikembangkan oleh Facebook pada tahun 2012 dan dirilis sebagai open source pada tahun 2015. GraphQL memberikan deskripsi lengkap dan mudah dipahami tentang data dalam API kamu, memberikan klien kekuatan untuk meminta persis apa yang mereka butuhkan dan tidak lebih, membuat API lebih mudah untuk berkembang seiring waktu, dan mengaktifkan developer tools yang powerful.

Berbeda dengan REST API yang memiliki banyak endpoint untuk berbagai resource, GraphQL biasanya hanya memiliki satu endpoint. Klien dapat menentukan struktur data yang mereka inginkan, dan server akan mengembalikan data dengan struktur yang persis sama.

Sejarah GraphQL

GraphQL pertama kali dikembangkan secara internal oleh Facebook pada tahun 2012 sebelum dirilis ke publik pada tahun 2015. Facebook membutuhkan solusi yang lebih efisien untuk mengambil data pada aplikasi mobile mereka. Masalah yang mereka hadapi dengan REST API adalah over-fetching (mengambil data yang tidak diperlukan) dan under-fetching (perlu melakukan multiple requests untuk mendapatkan semua data yang diperlukan).

Sejak dirilis sebagai open source, GraphQL telah diadopsi oleh banyak perusahaan besar seperti GitHub, Twitter, Airbnb, dan Shopify. Pada tahun 2018, GraphQL Foundation dibentuk di bawah Linux Foundation untuk mengatur pengembangan GraphQL ke depannya.

Cara Kerja GraphQL

GraphQL bekerja dengan cara yang berbeda dari REST API. Berikut adalah konsep dasar cara kerja GraphQL:

1. Schema

GraphQL menggunakan schema untuk mendefinisikan tipe data dan operasi yang tersedia. Schema ini ditulis menggunakan GraphQL Schema Definition Language (SDL). Contoh schema sederhana:

type User {
  id: ID!
  name: String!
  email: String!
  posts: [Post!]!
}

type Post {
  id: ID!
  title: String!
  content: String!
  author: User!
}

type Query {
  user(id: ID!): User
  users: [User!]!
  post(id: ID!): Post
}

2. Query

Klien mengirimkan query untuk meminta data. Query ini menentukan struktur data yang diinginkan. Contoh query:

query {
  user(id: "1") {
    name
    email
    posts {
      title
    }
  }
}

Response yang dikembalikan akan memiliki struktur yang sama persis dengan query:

{
  "data": {
    "user": {
      "name": "Rizky Kurniawan",
      "email": "[email protected]",
      "posts": [
        {
          "title": "Belajar GraphQL"
        },
        {
          "title": "Mengenal REST API"
        }
      ]
    }
  }
}

3. Mutation

Untuk memodifikasi data (create, update, delete), GraphQL menggunakan mutation. Contoh mutation:

mutation {
  createPost(title: "Post Baru", content: "Ini adalah post baru") {
    id
    title
    content
  }
}

4. Resolver

Di sisi server, resolver adalah fungsi yang bertanggung jawab untuk mengambil data untuk setiap field dalam query. Resolver menentukan bagaimana data diambil dari database atau sumber data lainnya.

Perbedaan GraphQL dengan REST API

Mari kita bandingkan GraphQL dengan REST API berdasarkan beberapa aspek:

1. Endpoint

REST API:

  • Memiliki multiple endpoints untuk berbagai resource
  • Contoh: /users, /users/:id, /posts, /posts/:id

GraphQL:

  • Biasanya hanya memiliki satu endpoint (misalnya /graphql)
  • Semua operasi dilakukan melalui endpoint yang sama

2. Over-fetching dan Under-fetching

REST API:

  • Over-fetching: Sering kali mengambil data yang tidak diperlukan
  • Under-fetching: Perlu melakukan multiple requests untuk mendapatkan semua data yang diperlukan

GraphQL:

  • Klien dapat meminta persis data yang mereka butuhkan
  • Satu request dapat mengambil data dari multiple resources

3. Versioning

REST API:

  • Biasanya menggunakan versioning pada URL (misalnya /v1/users, /v2/users)
  • Perubahan breaking changes memerlukan versi baru

GraphQL:

  • Tidak memerlukan versioning
  • Field dapat di-deprecate tanpa menghapusnya
  • Evolusi API lebih smooth

4. Documentation

REST API:

  • Dokumentasi biasanya dibuat secara terpisah
  • Perlu diupdate manual saat ada perubahan

GraphQL:

  • Self-documenting melalui schema
  • Tools seperti GraphiQL dan GraphQL Playground menyediakan dokumentasi interaktif otomatis

5. Caching

REST API:

  • Mudah di-cache menggunakan HTTP caching
  • Setiap endpoint dapat di-cache secara terpisah

GraphQL:

  • Caching lebih kompleks karena hanya ada satu endpoint
  • Memerlukan strategi caching yang lebih sophisticated (misalnya Apollo Client cache)

Contoh Perbandingan Request

Mari kita lihat contoh konkret perbedaan antara REST API dan GraphQL.

Skenario: Kita ingin mengambil data user beserta 3 post terakhir mereka.

Menggunakan REST API:

Request 1 - Ambil data user:

GET /users/1

Response:

{
  "id": 1,
  "name": "Rizky Kurniawan",
  "email": "[email protected]",
  "phone": "08123456789",
  "address": "Jakarta",
  "created_at": "2021-01-01"
}

Request 2 - Ambil posts user:

GET /users/1/posts?limit=3

Response:

[
  {
    "id": 1,
    "title": "Post 1",
    "content": "Content 1",
    "created_at": "2021-01-02",
    "updated_at": "2021-01-02"
  },
  {
    "id": 2,
    "title": "Post 2",
    "content": "Content 2",
    "created_at": "2021-01-03",
    "updated_at": "2021-01-03"
  }
]

Total: 2 requests, dan kita mendapatkan beberapa data yang tidak kita perlukan (phone, address, created_at, updated_at).

Menggunakan GraphQL:

Request:

query {
  user(id: 1) {
    name
    email
    posts(limit: 3) {
      title
      content
    }
  }
}

Response:

{
  "data": {
    "user": {
      "name": "Rizky Kurniawan",
      "email": "[email protected]",
      "posts": [
        {
          "title": "Post 1",
          "content": "Content 1"
        },
        {
          "title": "Post 2",
          "content": "Content 2"
        }
      ]
    }
  }
}

Total: 1 request, dan kita hanya mendapatkan data yang kita perlukan.

Kelebihan GraphQL

  1. Efisiensi: Klien dapat meminta persis data yang mereka butuhkan, mengurangi over-fetching dan under-fetching
  2. Fleksibilitas: Mudah untuk menambahkan field baru tanpa mempengaruhi query yang sudah ada
  3. Strong Typing: Schema yang strongly-typed membantu mencegah error dan memudahkan development
  4. Single Request: Dapat mengambil data dari multiple resources dalam satu request
  5. Developer Experience: Tools seperti GraphiQL memberikan pengalaman development yang sangat baik
  6. Self-Documenting: Schema berfungsi sebagai dokumentasi yang selalu up-to-date

Kekurangan GraphQL

  1. Kompleksitas: Lebih kompleks untuk dipelajari dan diimplementasikan dibanding REST API
  2. Caching: Strategi caching lebih rumit karena tidak bisa menggunakan HTTP caching standar
  3. File Upload: Handling file upload lebih kompleks dibanding REST API
  4. Query Complexity: Query yang terlalu kompleks dapat menyebabkan performance issues
  5. Learning Curve: Tim perlu waktu untuk belajar konsep dan best practices GraphQL
  6. Overhead: Untuk aplikasi sederhana, GraphQL mungkin overkill

Kapan Menggunakan GraphQL?

GraphQL cocok digunakan ketika:

  1. Aplikasi kamu memiliki banyak relasi data yang kompleks
  2. Kamu memiliki multiple clients (web, mobile, desktop) dengan kebutuhan data yang berbeda
  3. Kamu ingin mengurangi jumlah requests dari client
  4. Kamu membutuhkan fleksibilitas dalam pengambilan data
  5. Tim kamu sudah familiar dengan GraphQL atau siap untuk belajar

Kapan Menggunakan REST API?

REST API masih cocok digunakan ketika:

  1. Aplikasi kamu sederhana dengan struktur data yang straightforward
  2. Kamu membutuhkan HTTP caching yang simple
  3. Tim kamu sudah sangat familiar dengan REST dan tidak ada kebutuhan mendesak untuk migrasi
  4. Kamu membutuhkan file upload yang simple
  5. Kamu ingin implementasi yang lebih cepat dan simple

Kesimpulan

GraphQL dan REST API adalah dua pendekatan yang berbeda untuk membangun API. GraphQL menawarkan fleksibilitas dan efisiensi yang lebih tinggi, terutama untuk aplikasi dengan kebutuhan data yang kompleks. Namun, REST API masih sangat relevan dan cocok untuk banyak use case, terutama untuk aplikasi yang lebih sederhana.

Pilihan antara GraphQL dan REST API tergantung pada kebutuhan proyek kamu, kompleksitas aplikasi, dan kemampuan tim. Tidak ada yang lebih baik secara absolut - keduanya memiliki tempat masing-masing dalam dunia pengembangan aplikasi modern.

Jika kamu tertarik untuk belajar lebih lanjut tentang teknologi backend, jangan lupa baca juga artikel kami tentang Apa Itu REST API dan Apa Itu Microservices Architecture.

Ingin Berdiskusi?

Yuk bergabung di Grup Telegram Ruang Developer atau mulai diskusi melalui GitHub. See You!

Dapatkan contoh source code project backend, frontend, atau fullstack untuk kamu amati, tiru, dan modifikasi sesuka hati. Klik untuk melihat detail!
comments powered by Disqus

Berlangganan Gratis

Kamu akan menerima email update dari Ruang Developer

Beri Dukungan

Beri dukungan, dapatkan full source code project web untuk bahan referensi, tiru, dan modifikasi.
Lightbox