JSON Request Body dengan Serde
Penjelasan
Untuk menerima data JSON dari request body (misalnya form create catatan lewat API), Actix-web memakai extractor `web::Json<T>` yang dikombinasikan dengan crate Serde. Kamu perlu mendefinisikan struct yang merepresentasikan bentuk data, lalu menandainya dengan `#[derive(Deserialize)]` agar Serde tahu cara mengubah JSON mentah menjadi struct Rust. Kalau body request tidak sesuai skema (field hilang atau tipe salah), Actix otomatis mengembalikan HTTP 400 sebelum handler-mu bahkan dijalankan.
Contoh Konsep
use actix_web::{post, web, Responder};
use serde::Deserialize;
#[derive(Deserialize)]
struct CatatanBaru {
judul: String,
isi: String,
}
#[post("/catatan")]
async fn buat_catatan(data: web::Json<CatatanBaru>) -> impl Responder {
format!("Catatan '{}' berhasil dibuat", data.judul)
}
Praktikum
Lengkapi struct dan derive agar bisa dipakai sebagai JSON body dengan field judul dan isi.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Tambahkan crate `serde` dengan feature `derive` (`cargo add serde --features derive`) — tanpa feature ini, macro `#[derive(Deserialize)]` dan `#[derive(Serialize)]` tidak akan tersedia dan project gagal compile.