Extractor Validation
Penjelasan
Extractor Actix menjamin data sudah sesuai TIPE (misalnya field wajib ada dan tipenya benar), tapi tidak otomatis memvalidasi ATURAN bisnis (misalnya judul minimal 3 karakter, email harus format valid). Untuk itu kamu biasanya menulis validasi manual di dalam handler setelah data diekstrak, atau memakai crate seperti `validator` yang menyediakan derive macro `#[derive(Validate)]` supaya aturan validasi bisa dideklarasikan langsung di struct lewat atribut, mirip gaya validasi di Rails tapi dengan pengecekan di compile-time untuk strukturnya.
Contoh Konsep
use actix_web::{post, web, HttpResponse, Responder};
use serde::Deserialize;
#[derive(Deserialize)]
struct CatatanBaru {
judul: String,
isi: String,
}
#[post("/catatan")]
async fn buat_catatan(data: web::Json<CatatanBaru>) -> impl Responder {
if data.judul.trim().len() < 3 {
return HttpResponse::BadRequest().json("Judul minimal 3 karakter");
}
HttpResponse::Created().json("Catatan berhasil dibuat")
}
Praktikum
Lengkapi validasi agar menolak judul yang lebih pendek dari 3 karakter.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Untuk aplikasi dengan banyak aturan validasi, pertimbangkan crate `validator` (`cargo add validator --features derive`) supaya aturan tetap dideklarasikan dekat dengan struct-nya, bukan tersebar sebagai if-else manual di setiap handler.