Назад к вопросам
Junior — Middle
123
Чем отличаются аннотации ResponseEntity и ResponseBody в контексте обработки HTTP-ответов в Spring?
Ответ от нейросети
sobes.tech AI
Аннотация @ResponseBody в Spring указывает, что возвращаемое значение метода контроллера должно быть сериализовано напрямую в тело HTTP-ответа (например, в JSON или XML), минуя отображение на представление (view). Она применяется к методам или классам.
ResponseEntity — это класс-обёртка, который позволяет не только вернуть тело ответа, но и дополнительно задать HTTP-статус, заголовки и другие параметры ответа. Использование ResponseEntity даёт более гибкий контроль над HTTP-ответом.
Пример:
@GetMapping("/user")
@ResponseBody
public User getUser() {
return new User("John", 30); // тело будет сериализовано в JSON
}
@GetMapping("/userWithStatus")
public ResponseEntity<User> getUserWithStatus() {
User user = new User("John", 30);
return ResponseEntity.status(HttpStatus.OK)
.header("Custom-Header", "value")
.body(user);
}
Таким образом, @ResponseBody — это способ указать, что метод возвращает тело ответа, а ResponseEntity — объект, который содержит тело, статус и заголовки HTTP-ответа.