Study
Actix

Membangun JSON Response

Penjelasan

Untuk mengembalikan data sebagai JSON, Actix-web menyediakan `HttpResponse` dengan method builder seperti `.Ok()`, `.Created()`, `.NotFound()` yang bisa dirangkai dengan `.json(data)` — data yang dikirim cukup berupa struct yang mengimplementasikan `Serialize` (lewat `#[derive(Serialize)]`), Actix otomatis menyerialisasikannya jadi JSON beserta header `Content-Type: application/json` yang sesuai. Kamu juga bisa langsung mengembalikan tipe yang mengimplementasikan `Serialize` dari handler yang bertipe kembali `impl Responder` memakai `web::Json(data)`.

Contoh Konsep

use actix_web::{get, HttpResponse, Responder};
use serde::Serialize;

#[derive(Serialize)]
struct Catatan {
    id: u32,
    judul: String,
}

#[get("/catatan/1")]
async fn detail_catatan() -> impl Responder {
    let catatan = Catatan { id: 1, judul: "Belajar Actix".to_string() };
    HttpResponse::Ok().json(catatan)
}

Praktikum

Lengkapi response agar mengembalikan status 201 Created dengan body JSON catatan baru.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Pisahkan struct untuk response (`Serialize`) dari struct untuk request body (`Deserialize`) kalau bentuknya berbeda — misalnya response bisa menyertakan `id` dan `created_at` yang tidak ada di request body saat create.