← Kembali ke Blog

API JSON dan Layanan REST: Panduan Pengembangan Lengkap

Pelajari cara membangun dan mengonsumsi API REST berbasis JSON. Mencakup metode HTTP, autentikasi, praktik terbaik, dan contoh implementasi dunia nyata.

Big JSON Team15 menit bacalanjutan
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

15 min read

Dasar-dasar API REST

API REST (Representational State Transfer) menggunakan JSON sebagai format data utama untuk body permintaan (request) dan tanggapan (response).

Metode HTTP

  • GET: Mendapatkan data
  • POST: Membuat sumber daya (resource) baru
  • PUT: Memperbarui seluruh sumber daya
  • PATCH: Pembaruan parsial
  • DELETE: Menghapus sumber daya

Membangun API dengan Express.js

import express from 'express';

const app = express();

app.use(express.json());

let users = [

{ id: 1, name: 'Alice' },

{ id: 2, name: 'Bob' }

];

// GET semua pengguna

app.get('/api/users', (req, res) => {

res.json(users);

});

// GET satu pengguna

app.get('/api/users/:id', (req, res) => {

const user = users.find(u => u.id === parseInt(req.params.id));

if (!user) return res.status(404).json({ error: 'Tidak ditemukan' });

res.json(user);

});

// POST buat pengguna

app.post('/api/users', (req, res) => {

const user = { id: users.length + 1, ...req.body };

users.push(user);

res.status(201).json(user);

});

app.listen(3000);

Membangun API dengan Python FastAPI

from fastapi import FastAPI, HTTPException

from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):

name: str

email: str

users_db = []

@app.get("/api/users")

def get_users():

return users_db

@app.post("/api/users", status_code=201)

def create_user(user: User):

users_db.append(user.dict())

return user

@app.get("/api/users/{user_id}")

def get_user(user_id: int):

if user_id >= len(users_db):

raise HTTPException(status_code=404, detail="Tidak ditemukan")

return users_db[user_id]

Mengonsumsi API

JavaScript Fetch

// Permintaan GET

const response = await fetch('https://api.example.com/users');

const users = await response.json();

// Permintaan POST

const newUser = await fetch('https://api.example.com/users', {

method: 'POST',

headers: { 'Content-Type': 'application/json' },

body: JSON.stringify({ name: 'Alice', email: 'alice@example.com' })

});

Python Requests

import requests

# GET

response = requests.get('https://api.example.com/users')

users = response.json()

# POST

new_user = requests.post(

'https://api.example.com/users',

json={'name': 'Alice', 'email': 'alice@example.com'}

)

Pola Respons API

Respons Berhasil (Success)

{

"success": true,

"data": {

"id": 1,

"name": "Alice"

}

}

Respons Kesalahan (Error)

{

"success": false,

"error": {

"code": "VALIDATION_ERROR",

"message": "Input tidak valid",

"details": [

{

"field": "email",

"message": "Format email tidak valid"

}

]

}

}

Autentikasi

Token Bearer

fetch('/api/protected', {

headers: {

'Authorization': 'Bearer token-anda-di-sini'

}

});

API Key

fetch('/api/data', {

headers: {

'X-API-Key': 'api-key-anda'

}

});

Paginasi

{

"data": [...],

"pagination": {

"page": 1,

"perPage": 20,

"total": 156,

"totalPages": 8

}

}

Praktik Terbaik

  • Gunakan kode status HTTP yang sesuai
  • Berikan versi pada API Anda (/api/v1/users)
  • Implementasikan pembatasan tingkat panggilan (rate limiting)
  • Validasi semua data input
  • Gunakan HTTPS di lingkungan produksi
  • Dokumentasikan API Anda (OpenAPI/Swagger)
  • Kode Status (Status Codes)

    • 200: OK
    • 201: Created
    • 204: No Content
    • 400: Bad Request
    • 401: Unauthorized
    • 404: Not Found
    • 500: Internal Server Error

    Kesimpulan

    API REST dengan JSON adalah tulang punggung aplikasi web modern. Kuasai metode HTTP, kode status yang tepat, dan autentikasi untuk membangun API yang tangguh!

    Share:

    Artikel Terkait

    Read in English