Dadang Kriswanto

Business Analyst

System Analyst

Project Manager

Tech Enthusiast

0

No products in the cart.

Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto
Dadang Kriswanto

Business Analyst

System Analyst

Project Manager

Tech Enthusiast

Blog Post

REST API vs GraphQL: Panduan Memilih untuk System Analyst

February 12, 2026 System Design, Uncategorized
Coding dan arsitektur API — REST vs GraphQL

Pendahuluan

Sebagai System Analyst, salah satu keputusan arsitektur yang sering dihadapi adalah memilih antara REST API dan GraphQL. Keduanya adalah pendekatan komunikasi antar sistem, tapi dengan filosofi yang berbeda.

Apa Itu REST API?

REST (Representational State Transfer) adalah arsitektur API yang menggunakan HTTP methods standar:

  • GET
  • POST
  • PUT/PATCH
  • DELETE

Setiap resource memiliki endpoint tersendiri, misalnya:

  • GET /api/users
  • GET /api/users/123
  • POST /api/users

Apa Itu GraphQL?

GraphQL adalah query language untuk API yang dikembangkan oleh Facebook. Perbedaan utamanya:

  • Single endpoint
  • Client-driven
  • Strongly typed

Perbandingan

Kapan Memilih REST?

  • Sistem sederhana dengan resource yang jelas
  • Tim yang familiar dengan REST
  • Butuh
  • Integrasi dengan banyak third-party service
  • Public API yang perlu dokumentasi standar (OpenAPI/Swagger)

Kapan Memilih GraphQL?

  • Frontend butuh fleksibilitas tinggi dalam mengambil data
  • Banyak
  • Mobile app yang butuh
  • Dashboard kompleks dengan banyak variasi query

Contoh: Arsitektur REST API (Sequence Diagram)

Bagaimana client mengambil data user beserta order di REST — butuh 2 request terpisah:

sequenceDiagram
    participant Client
    participant REST as REST API Server
    participant DB as Database

    Note over Client,DB: REST: Multiple Endpoints
    Client->>REST: GET /api/users/123
    REST->>DB: SELECT * FROM users WHERE id=123
    DB-->>REST: User data
    REST-->>Client: {id:123, name:"Dadang", email:"..."}

    Client->>REST: GET /api/users/123/orders
    REST->>DB: SELECT * FROM orders WHERE user_id=123
    DB-->>REST: Orders data
    REST-->>Client: [{orderId:1, total:500K}, {orderId:2, total:750K}]

    Note over Client: Total: 2 HTTP requests

Contoh: Arsitektur GraphQL (Sequence Diagram)

Dengan GraphQL, client bisa mengambil data yang sama dalam 1 request:

sequenceDiagram
    participant Client
    participant GQL as GraphQL Server
    participant DB as Database

    Note over Client,DB: GraphQL: Single Endpoint
    Client->>GQL: POST /graphql
    Note right of Client: query { user(id:123) {<br>name, email,<br>orders { orderId, total }<br>}}
    GQL->>DB: SELECT user + orders (resolved)
    DB-->>GQL: Combined data
    GQL-->>Client: {user:{name:"Dadang", orders:[...]}}

    Note over Client: Total: 1 HTTP request

Contoh: Decision Tree Memilih REST vs GraphQL

flowchart TD
    Start(["Pilih API Style"]) --> Q1{"Data banyak relasi nested?"}
    Q1 -->|Ya| Q2{"Mobile app dengan bandwidth terbatas?"}
    Q1 -->|Tidak| Q3{"Public API?"}

    Q2 -->|Ya| GQL1["GraphQL"]
    Q2 -->|Tidak| Q4{"Dashboard dengan banyak variasi query?"}

    Q4 -->|Ya| GQL2["GraphQL"]
    Q4 -->|Tidak| REST1["REST API"]

    Q3 -->|Ya| REST2["REST API + OpenAPI Docs"]
    Q3 -->|Tidak| Q5{"Tim familiar GraphQL?"}

    Q5 -->|Ya| GQL3["GraphQL"]
    Q5 -->|Tidak| REST3["REST API"]

    style GQL1 fill:#E040FB,color:#fff
    style GQL2 fill:#E040FB,color:#fff
    style GQL3 fill:#E040FB,color:#fff
    style REST1 fill:#2196F3,color:#fff
    style REST2 fill:#2196F3,color:#fff
    style REST3 fill:#2196F3,color:#fff

Rekomendasi untuk System Analyst

Dalam praktek, REST tetap menjadi pilihan default untuk kebanyakan proyek. Pertimbangkan GraphQL hanya jika ada kebutuhan spesifik seperti dashboard kompleks atau mobile app dengan bandwidth terbatas.

Ditulis oleh Dadang Kriswanto — System Analyst & Blogger di dadang.kriswanto.my.id

Tags:
Write a comment