setup rapido
spring boot accelera la creazione di api. usa starter web e valida i payload.
# con spring initializr
# dipendenze: spring web, validation
controller
i controller espongono endpoint e trasformano dto in domain.
@RestController
@RequestMapping("/api/projects")
class projectController {
@GetMapping
List<Project> all() { return service.all(); }
@PostMapping
Project create(@Valid @RequestBody ProjectInput input) {
return service.create(input);
}
}
dto e validazione
separa dto e domain per evitare accoppiamenti eccessivi.
record ProjectInput(@NotBlank String name, @Size(max=140) String note) {}
error handling
normalizza gli errori con un handler globale e messaggi coerenti.
@ControllerAdvice
class errorHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
ResponseEntity<ApiError> handle() {
return ResponseEntity.badRequest().body(new ApiError("invalid"));
}
}
esercizi
crea una api di note con endpoint get, post, delete.
aggiungi validazione e un mapper dto -> entity.
checklist
- separa dto e domain
- valida input in ingresso
- usa http status corretti
- documenta l'api
panoramica
In questo capitolo su api rest con spring boot, controller, dto e validazione per servizi moderni. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.
Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).
badge: api design
obiettivi
- capire e applicare setup in uno scenario reale
- capire e applicare controller in uno scenario reale
- capire e applicare dto e validazione in uno scenario reale
- capire e applicare error handling in uno scenario reale
scheda rapida
import java.util.List;
public class Main {
public static void main(String[] args) {
var dati = List.of(1, 2, 3);
var out = dati.stream().map(x -> x * 2).toList();
System.out.println(out);
}
}
Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.
tips
- organizza package per dominio
- preferisci immutabilità dove possibile
- documenta le API pubbliche
- resource naming consistente
- usa HTTP status corretti
- valida input
tip: Le API pubbliche si progettano come prodotti.
mini progetto
Specifica endpoints per un catalogo.
- definisci risorse
- mappa metodi HTTP
- definisci payload
- documenta errori
output atteso: uno script o query ripetibile con risultati verificabili.