August 6, 2026

Pengantar GraphQL.

Apa itu GraphQL, perbedaannya dengan REST API, serta cara dasar menulis query dan mutation untuk mengambil dan mengubah data.

GraphQL adalah bahasa query untuk API yang memungkinkan klien meminta persis data yang dibutuhkan, tidak lebih dan tidak kurang — berbeda dari REST API yang biasanya mengembalikan struktur data tetap dari setiap endpoint.

Masalah yang Dijawab GraphQL

Pada REST API, endpoint seperti /pengguna/1 bisa saja mengembalikan puluhan field padahal klien hanya butuh nama dan emailnya saja (over-fetching), atau sebaliknya perlu memanggil beberapa endpoint sekaligus untuk mengumpulkan data yang saling berkaitan (under-fetching). GraphQL mengatasi keduanya lewat satu endpoint fleksibel yang bentuknya ditentukan oleh permintaan klien.

Query: Mengambil Data

query {
  pengguna(id: 1) {
    nama
    email
    postingan {
      judul
    }
  }
}

Hasilnya persis mengikuti struktur yang diminta:

{
  "data": {
    "pengguna": {
      "nama": "Rangga",
      "email": "[email protected]",
      "postingan": [
        { "judul": "Belajar GraphQL" }
      ]
    }
  }
}

Mutation: Mengubah Data

Jika query dipakai untuk membaca data, mutation dipakai untuk membuat, mengubah, atau menghapus data.

mutation {
  buatPostingan(judul: "Judul Baru", isi: "Isi artikel...") {
    id
    judul
  }
}

Schema dan Type

Setiap API GraphQL memiliki schema yang mendefinisikan tipe data dan operasi apa saja yang tersedia, berfungsi sebagai kontrak antara server dan klien.

type Pengguna {
  id: ID!
  nama: String!
  email: String!
  postingan: [Postingan!]!
}

type Postingan {
  id: ID!
  judul: String!
}

Tanda ! menandakan field tersebut wajib ada (non-null).

Memanggil GraphQL dari JavaScript

async function ambilPengguna(id) {
  const respons = await fetch("https://api.contoh.com/graphql", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      query: `
        query {
          pengguna(id: ${id}) {
            nama
            email
          }
        }
      `,
    }),
  });

  const { data } = await respons.json();
  return data.pengguna;
}

Berbeda dari REST yang biasanya memakai banyak endpoint dengan method HTTP berbeda (GET, POST, dst), GraphQL pada umumnya hanya memakai satu endpoint dan selalu memakai method POST.

Kesimpulan

GraphQL memberi klien kendali penuh atas bentuk data yang diminta lewat query yang fleksibel, mengurangi masalah over-fetching dan under-fetching yang umum terjadi di REST API. Sebagai gantinya, tim yang membangun API perlu merancang schema dengan cermat sejak awal, karena schema tersebut menjadi kontrak utama antara server dan seluruh klien yang menggunakannya.

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.

Comments