Validasi: @Valid & Bean Validation
Penjelasan
Bean Validation menambahkan annotation validasi langsung di properti DTO (@NotBlank, @Size, @Min, @Email, dst dari package jakarta.validation.constraints). Menambahkan @Valid di parameter @RequestBody Controller membuat Spring Boot OTOMATIS memvalidasi sebelum method dieksekusi — kalau gagal, otomatis merespons 400 dengan detail error.
Contoh Konsep
// dependency: spring-boot-starter-validation
public record CreateProdukRequest(
@NotBlank(message = "Nama wajib diisi")
@Size(min = 3, max = 100)
String nama,
@Min(value = 0, message = "Harga tidak boleh negatif")
double harga
) {}
@PostMapping("/produk")
public ResponseEntity<CreateProdukRequest> store(@Valid @RequestBody CreateProdukRequest request) {
// validasi otomatis jalan SEBELUM method ini dieksekusi
return ResponseEntity.status(HttpStatus.CREATED).body(request);
}
Praktikum
Tambahkan annotation validasi ke CreateArtikelRequest: judul wajib string minimal 5 karakter (@NotBlank, @Size), isi wajib diisi (@NotBlank). Tambahkan @Valid di parameter method store().
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Lupa menulis @Valid di depan @RequestBody membuat annotation validasi di DTO (@NotBlank, dst) DIABAIKAN SEPENUHNYA — data yang tidak valid tetap LOLOS ke dalam method, kesalahan yang sering tidak ketahuan sampai testing manual karena TIDAK ADA error saat compile.