RequestBody и ResponseBody
Тело запроса как Java-объект
Для создания или изменения ресурса клиент часто отправляет данные в теле HTTP-запроса, например JSON.
Аннотация @RequestBody говорит Spring MVC прочитать тело сообщения
и преобразовать его в объект указанного типа.
record CreateUserRequest(String name, String email) {}
@PostMapping("/users")
@ResponseBody
UserDto create(@RequestBody CreateUserRequest request) {
return userService.create(request);
}
Контроллер получает готовый CreateUserRequest, а не исходную JSON-строку.
Это позволяет работать с обычными Java-типами и не смешивать разбор формата сообщения с логикой метода.
Возвращаемое значение как тело ответа
Аннотация @ResponseBody означает, что результат метода нужно записать
в тело HTTP-ответа, а не воспринимать, например, как имя представления.
Если клиент ожидает JSON и для типа доступно подходящее преобразование, объект будет сериализован в JSON.
Таким образом, @RequestBody работает на входе,
а @ResponseBody — на выходе. Конкретный механизм выбора и выполнения
преобразования сообщения мы разберём в конце раздела.
CreateUserRequest делает эту границу явной.