tutorial

72 Menggunakan GraphQL Playground untuk Dokumentasi Interaktif

72 Menggunakan GraphQL Playground untuk Dokumentasi Interaktif

GraphQL telah merevolusi cara kita membangun dan mengkonsumsi API. Salah satu keunggulan utamanya adalah kemampuannya untuk mendokumentasikan API secara interaktif, dan alat terbaik yang sering digunakan untuk ini adalah GraphQL Playground. Dalam artikel ini, saya akan membahas bagaimana penggunaan Playground tidak hanya membantu pengembang dalam mencoba query, tetapi juga sebagai media dokumentasi interaktif—mulai dari instalasi, fitur dokumentasi otomatis, sampai simulasi query yang powerful.


Apa itu GraphQL Playground?

GraphQL Playground adalah IDE interaktif berbasis web untuk menguji, menulis, dan mendokumentasikan query GraphQL. Mirip seperti Postman untuk REST API, Playground memungkinkan kita untuk:

  • Menulis, mengirim, dan menyimpan query/mutation
  • Melihat dokumentasi API secara otomatis
  • Mendapatkan autocomplete dan validasi sintaks
  • Menjalankan subscription secara real-time

Dengan fitur ini, komunikasi antara backend dan frontend menjadi lebih seamless, tim dapat melakukan eksplorasi endpoint API tanpa harus mengandalkan dokumentasi statis.


Instalasi Playground

1. Menggunakan Standalone App

GraphQL Playground tersedia sebagai aplikasi desktop. Anda bisa mendownload dari GitHub Prisma Labs.

2. Integrasi dengan Server

Sebagian besar implementasi server GraphQL (misal Apollo Server, Express-GraphQL) menyediakan Playground di endpoint tertentu (contoh: /graphql). Contoh setup sederhana dengan Apollo Server:

const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
  type Query {
    hello: String
    user(id: ID!): User
  }

  type User {
    id: ID!
    name: String!
    email: String!
  }
`;

const resolvers = {
  Query: {
    hello: () => 'Hello world!',
    user: (parent, args) => ({
      id: args.id,
      name: 'Budi',
      email: 'budi@example.com'
    }),
  },
};

const server = new ApolloServer({ typeDefs, resolvers });

server.listen().then(({ url }) => {
  console.log(`🚀  Server ready at ${url}`);
});

Buka http://localhost:4000 di browser dan Playground akan muncul.


Fitur Dokumentasi Otomatis

GraphQL bersifat self-documented. Pada Playground, klik tab “DOCS” di bagian kanan untuk melihat schema lengkap: query, mutation, tipe data, argument, dan deskripsi jika ada.

Contoh Tampilan Playground

│ DOCS        │ SCHEMA   │
│-----------------------│
│ type Query {          │
│   hello: String       │
│   user(id: ID!): User │
│ }                     │
│                       │
│ type User {           │
│   id: ID!             │
│   name: String!       │
│   email: String!      │
│ }                     │

Dengan fitur ini, tidak ada lagi istilah “dokumennya ketinggalan versi implementasi”.

Tambahkan Deskripsi untuk Dokumentasi Lebih Kaya

Gunakan komentar string pada typeDefs agar Playground menampilkan deskripsi pada sisi user.

"""
User merupakan entitas pengguna platform.
"""
type User {
  id: ID!
  
  """Nama lengkap pengguna"""
  name: String!
  
  """Alamat email pengguna"""
  email: String!
}

Hasilnya, klik field name atau email di Playground, deskripsi akan muncul sebagai tooltips.


Simulasi: Query dan Dokumentasi Interaktif

Manfaat utama Playground adalah sebagai media eksperimen dan dokumentasi sekaligus.

Query Dokumentasi

Sebagai frontend engineer, saya ingin tahu apa output dari query user:

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

Simulasi Respon:

{
  "data": {
    "user": {
      "id": "1",
      "name": "Budi",
      "email": "budi@example.com"
    }
  }
}

Eksplorasi Struktur Dengan Documentation Explorer

Klik “DOCS” → “Query” → “user”, semua arguments, field bawaan, dan tipe data secara langsung terlihat. Tidak lagi kebingungan mengenai endpoint mana saja yang tersedia.


Perbandingan GraphQL Playground vs Dokumentasi Statis

FiturPlayground (Interaktif)Dokumentasi Statis (Markdown, PDF, dsb)
Realtime UpdateYaTidak
Langsung Coba Query/MutationYaTidak
Autocomplete QueryYaTidak
Error DetectionYa (langsung)Tidak
Klik untuk EksplorasiYaTidak
Integrasi Dev-ToolTinggiTidak

Diagram Alur Penggunaan GraphQL Playground

flowchart TD
    A[User membuka GraphQL Playground] --> B{Pilih Tab}
    B -- "DOCS" --> C[Tampil dokumentasi schema]
    B -- "SCHEMA" --> D[Lihat definisi kode schema]
    B -- "Query Editor" --> E[Tulis Query/Muation]

    E --> F[Kirim request ke server GraphQL]
    F --> G[Kembali response]
    G --> H[Tampilkan hasil response & error jika ada]
    C -- "Klik Field" --> I[Tampilkan deskripsi & argumen]

Tips Pro: Membuat Dokumentasi Otomatis dengan Playground

  1. Selalu Update Schema dan Deskripsi
    Tulis tipe beserta deskripsi lengkap agar tim lain tahu fungsi tiap field.
  2. Versioning Endpoint
    Misal: /v1/graphql dan /v2/graphql, masing-masing bisa punya schema & Playground berbeda.
  3. Preset Query/Muation
    Simpan query yang sering dipakai di Playground agar mudah diakses tim lain (menu “History”).
  4. Sharing URL Playground
    Jika pakai layanan cloud atau playground di staging, cukup share URL-nya untuk onboarding dokumentasi ke tim eksternal.

Studi Kasus: Kolaborasi Frontend dan Backend

Saya pernah punya pengalaman di tim dengan anggota frontend dan backend terpisah negara. Playground menjadi “single source of truth”—semua query, argument, dan sample payload disepakati dulu di Playground. Tidak ada lagi kasus field backend diubah tanpa kabari frontend: cukup lihat schema di Playground, pasti ketahuan.


Penutup: Playground = Dokumentasi, Playground = Eksperimen

GraphQL Playground lebih dari sekadar tool testing, dia adalah living documentation yang sangat memudahkan kolaborasi antar tim dan perusahaan. Jika Anda masih mengandalkan dokumentasi API statis, cobalah migrasi ke GraphQL dan maksimalkan Playground—kerja jadi lebih efisien, komunikasi tim jauh lebih sehat.

Sudahkah Anda sepenuhnya memanfaatkan Playground sebagai dokumentasi interaktif di project Anda?


Referensi:

Silakan bagikan komentar atau pertanyaan seputar pengalaman Anda memakai GraphQL Playground di bawah!

comments powered by Disqus