junior
Как работают аннотации маппинга запросов: @RequestMapping, @GetMapping, @PostMapping?
Эти аннотации связывают HTTP-запросы с методами контроллера. @GetMapping, @PostMapping и другие – сокращения для @RequestMapping с конкретным HTTP-методом.
Пример
@RestController
@RequestMapping("/api/v1/users") // общий префикс
public class UserController {
@GetMapping // GET /api/v1/users
public List<UserDto> findAll() { }
@GetMapping("/{id}") // GET /api/v1/users/123
public UserDto findById(@PathVariable Long id) { }
@PostMapping // POST /api/v1/users
public UserDto create(@RequestBody CreateUserRequest request) { }
@PutMapping("/{id}") // PUT /api/v1/users/123
public UserDto update(@PathVariable Long id, @RequestBody UpdateUserRequest request) { }
@DeleteMapping("/{id}") // DELETE /api/v1/users/123
public void delete(@PathVariable Long id) { }
}
Расширенные параметры
Пример
@GetMapping(value = "/users", headers = "X-API-VERSION=2") // по заголовку
@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE) // по Content-Type
@GetMapping(produces = MediaType.APPLICATION_XML_VALUE) // по Accept
На собеседовании: покажите знание shortcut-аннотаций и параметров маппинга. Частая ошибка – маппинг нескольких методов на один URL + HTTP-метод (
IllegalStateException).