REST APIs — Controller & Endpoints
REST APIs mit Spring Boot
Spring Boot macht REST trivial: eine Annotation, eine Methode, fertig.
Lektion 11: @RestController
@RestController = @Controller + @ResponseBody. Jeder Rückgabewert wird
direkt als JSON serialisiert (via Jackson).
@RestController
@RequestMapping("/api/products")
public class ProductController {
@GetMapping
public List<Product> all() { return service.findAll(); }
}
Lektion 12: HTTP-Methoden
| Annotation | HTTP | Use Case |
|---|---|---|
@GetMapping | GET | Lesen |
@PostMapping | POST | Erstellen |
@PutMapping | PUT | Vollständig ersetzen |
@PatchMapping | PATCH | Teilweise aktualisieren |
@DeleteMapping | DELETE | Löschen |
Lektion 13: Path-Variablen & Request-Parameter
@GetMapping("/{id}")
public Product byId(@PathVariable Long id) { return service.findById(id); }
@GetMapping("/search")
public List<Product> search(@RequestParam String q) { return service.search(q); }
Lektion 14: Request-Body & DTOs
record ProductDto(String name, double price) {}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public ProductDto create(@Valid @RequestBody ProductDto dto) {
return service.create(dto);
}
record DTos sind immutable, kompakt und automatisch JSON-serialisierbar.
DTOs vs. Entities
Trenne Entitäten (JPA) von DTOs (API). Nie Entitäten direkt als Response
zurückgeben — das offengelegt Lazy-Loading-Probleme und interne Felder.
Ein record als DTO ist 1 Zeile: record ProductDto(String name, double price) {}.
Lektion 15: Status-Codes & Content Negotiation
@PostMapping
public ResponseEntity<ProductDto> create(@Valid @RequestBody ProductDto dto) {
ProductDto saved = service.create(dto);
return ResponseEntity.created(URI.create("/api/products/" + saved.id())).body(saved);
}
HTTP-Status-Codes: die richtige Antwort
Status-Codes sind Vertrag. 2xx = Erfolg, 3xx = Umleitung, 4xx = Client-Fehler,
5xx = Server-Fehler. Die häufigsten: 200 OK, 201 Created, 204 No Content,
400 Bad Request, 404 Not Found, 409 Conflict, 422 Unprocessable Entity.
Spring Boot 3 nutzt ResponseEntity<T> für volle Kontrolle über Status und Header.
Praxis-Szenario: REST-API für einen Blog
Du designst eine Blog-API. Endpunkte: Beiträge listen, erstellen, lesen, aktualisieren, löschen. Welche HTTP-Methoden und Status-Codes verwendest du?
✅ Wichtige Erkenntnisse
Haken setzen, um deinen Lernfortschritt zu markieren: