Request Mapping
Как запрос находит метод контроллера
Spring MVC связывает HTTP-запросы с методами контроллера через mapping-аннотации.
В mapping обычно участвуют путь и HTTP-метод. Самый общий вариант —
@RequestMapping, а для конкретных HTTP-методов есть более короткие аннотации:
@GetMapping, @PostMapping,
@PutMapping, @PatchMapping и
@DeleteMapping.
@RestController
@RequestMapping("/orders")
class OrderController {
@GetMapping("/{id}")
OrderDto find(@PathVariable long id) {
return orderService.find(id);
}
@PostMapping
OrderDto create(@RequestBody CreateOrderRequest request) {
return orderService.create(request);
}
}
Mapping на классе задаёт общий префикс /orders.
Mapping на методах уточняют путь и HTTP-операцию: первый метод обрабатывает
GET /orders/{id}, второй — POST /orders.
Один URL не означает один обработчик
Одинаковый путь может иметь разные методы для разных HTTP-операций. Это позволяет использовать один ресурсный URL и явно разделять чтение, создание, изменение и удаление. Кроме пути и HTTP-метода, mapping может учитывать дополнительные условия запроса, но в большинстве endpoints достаточно хорошо выбранного пути и подходящей специализированной аннотации.
GET не стоит использовать для операции,
которая изменяет состояние только потому, что так проще вызвать URL из браузера.