Merancang REST API, Route Handlers & Validasi Skema Data
Membangun Endpoint HTTP yang Idempoten, Aman & Tervalidasi di Next.js Route Handlers
01. Target Pembelajar & Prasyarat
Full-stack developer yang membangun backend API.
02. Kompetensi Konseptual (Level 1ā2)
- āMenjelaskan perbedaan sifat idempoten pada GET/PUT vs non-idempoten pada POST.
03. Kompetensi Praktis & Artefak Nyata (Level 3ā4)
- āMembangun Route Handler POST /api/orders lengkap dengan validasi skema input.
04. Aplikasi Nyata & Verifikasi
Penerapan Industri: Endpoint pesanan `/api/orders` di aplikasi produksi Z-Automation.
Metode Verifikasi: Mengirimkan request dengan payload tidak lengkap via curl dan memverifikasi respons error 400 Bad Request.
Mengapa Subjek Ini Krusial dalam Rekayasa Nyata?
Pelajari standar perancangan REST API (GET, POST, PATCH), kode status HTTP yang benar, validasi payload runtime, dan penanganan error terstruktur.
Dalam lingkungan produksi, kegagalan memahami batas-batas arsitektur sistem sering kali menyebabkan bug yang sulit dilacak, pemborosan biaya komputasi, atau antarmuka yang lambat bagi pengguna.
Bagaimana Sistem Sebenarnya Bekerja di Tingkat Protokol
Disiplin Desain REST API
Sebuah API yang baik bersifat dapat diprediksi. Metode HTTP memiliki arti semantik yang tegas: `GET` hanya untuk membaca data, `POST` untuk membuat entitas baru, dan `DELETE` untuk menghapus.
Alur Arsitektur Sistem Otonom & Runtime
Pesan bahasa alami diterima melalui antarmuka web atau webhook chat.
{
"input": "Berapa estimasi biaya pembuatan landing page bisnis?"
}Koreksi Asumsi Umum vs Realitas Rekayasa
āSelalu mengembalikan 200 OK dengan isi { error: 'Gagal' } adalah praktik yang baik.ā
Ini adalah anti-pattern yang merusak pemantauan HTTP dan caching perantara. Gunakan kode status standar (400, 404, 500).
Implementasi Langkah-demi-Langkah
Hasil akhir yang diharapkan: Next.js Route Handler yang memvalidasi pesanan layanan.
src/app/api/demo-orders/ āāā route.ts
1Implementasi Route Handler Tervalidasi
Menerima POST JSON dan memverifikasi field wajib.
| 1 | // src/app/api/demo-orders/route.ts |
| 2 | import { NextResponse } from 'next/server'; |
| 3 | |
| 4 | export async function POST(request: Request) { |
| 5 | try { |
| 6 | const body = await request.json(); |
| 7 | if (!body.nama || !body.paketId || typeof body.nomorWa !== 'string') { |
| 8 | return NextResponse.json( |
| 9 | { sukses: false, error: 'Field nama, paketId, dan nomorWa wajib diisi.' }, |
| 10 | { status: 400 } |
| 11 | ); |
| 12 | } |
| 13 | const orderId = 'ORD_' + Date.now(); |
| 14 | return NextResponse.json({ sukses: true, orderId }, { status: 201 }); |
| 15 | } catch (err) { |
| 16 | return NextResponse.json({ sukses: false, error: 'Invalid JSON body' }, { status: 400 }); |
| 17 | } |
| 18 | } |
{ sukses: true, orderId: 'ORD_...' }Mengantisipasi Masalah Umum & Tantangan Ekstensi
Tambahkan validasi format nomor WhatsApp Indonesia (harus berawalan 08 atau 62).
Uji Kompetensi Mandiri & Verifikasi Hasil
Standar kelulusan Z-Automation mewajibkan skor minimum 80 / 100 Poin dengan komponen Implementasi Praktis minimal 21 / 35 Poin (60%). Jawab soal diagnostik dan centang hasil pengujian praktis Anda.
BAGIAN A // PERTANYAAN DIAGNOSTIK KONSEPTUAL & TEKNIS (40 POIN)
01.Kode status HTTP mana yang paling tepat jika klien mengirim payload JSON yang kehilangan data wajib?
BAGIAN B // DAFTAR PERIKSA HASIL IMPLEMENTASI PRAKTIS (35 POIN ā MIN. 21 POIN)
Centang item di bawah ini hanya jika Anda telah menjalankan kode di komputer Anda dan mengamati output yang benar: