Study
Actix

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.

Editor Latihan

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.