Model Binding: [FromBody], [FromQuery]
Penjelasan
ASP.NET Core otomatis menebak sumber data untuk parameter handler/action (disebut model binding), tapi bisa ditentukan eksplisit lewat atribut: [FromBody] (data JSON dari body request), [FromQuery] (query string), [FromRoute] (parameter path). Menentukan eksplisit membuat kode lebih jelas dan menghindari ambiguitas saat parameternya kompleks.
Contoh Konsep
public record CreateProdukRequest(string Nama, decimal Harga);
[HttpPost]
public IActionResult Create([FromBody] CreateProdukRequest request)
{
return Ok($"Produk {request.Nama} dengan harga {request.Harga} berhasil dibuat");
}
[HttpGet]
public IActionResult Search([FromQuery] string q, [FromQuery] int page = 1)
{
return Ok($"Mencari: {q}, halaman: {page}");
}
Praktikum
Buat record CreateArtikelRequest dengan Judul (string) dan Isi (string). Buat method Create([FromBody] CreateArtikelRequest request) yang mengembalikan Ok() dengan pesan konfirmasi berisi Judul yang dikirim.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
record (dipakai untuk CreateProdukRequest) sangat cocok untuk DTO/request body — otomatis punya constructor, equality comparison, dan bersifat immutable secara default, jauh lebih ringkas dibanding class biasa dengan properti get/set manual untuk kebutuhan seperti ini.