Я новичок в весенней загрузке, и я пытаюсь создать методы обработчика для создания REST API при весенней загрузке. Чтобы обработать запрос локальный: 8080 / стек, я создал ниже метод обработчика, в котором я использовал конструктор ResponseEntity для создания его объекта и передачи его в операторе возврата.
@GetMapping("/stack")
public ResponseEntity<String> stack(){
System.out.println("I am stack method");
return new ResponseEntity<>("Body",HttpStatus.OK);
}
}
Но я также могу сделать это, используя метод ниже
@GetMapping("/stack")
public ResponseEntity<String> stack(){
System.out.println("I am stack method");
return ResponseEntity.status(HttpStatus.OK).body("Body");
}
Я не знаю, как лучше всего создать и вернуть объект ResponseEntity в методе обработчика с помощью конструкторов или с помощью метода сборки () и почему? Кто-нибудь, пожалуйста, помогите здесь. Какой способ производства наиболее предпочтителен?
Дело в том, что на самом деле вы могли бы даже записать ResponseEntitiy.ok("Body"); или ResponseBody.ok().body("Body");, которые были бы более четкими и краткими.
Обратите внимание, что если вы делать используете status (что необходимо для менее распространенных, таких как 429), рекомендуется статически импортировать значения перечисления, потому что код более читабелен.
В этом случае я бы просто вернул String, например, public String stack (). Я определяю возвращаемый объект ResponseEntity только тогда, когда мне нужно что-то добавить к нему в этом методе. Однако все 3 способа дадут одинаковые результаты.




ResponseEntity предназначен для представления всего HTTP-ответа. Вы можете контролировать все, что входит в него: код состояния, заголовки и тело.
@ResponseBody - это маркер тела HTTP-ответа, а @ResponseStatus объявляет код состояния HTTP-ответа.
@ResponseStatus не очень гибкий, ResponseEntity позволяет делать больше.
Это то же самое, что даже второй подход создает новый объект класса ResponseEntity. Если вы проверите реализацию метода тело, как показано ниже: -
@Override
public <T> ResponseEntity<T> body(@Nullable T body) {
return new ResponseEntity<>(body, this.headers, this.statusCode);
}
В этом случае лучший способ - вернуть строку ("Body") из метода restcontroller, она будет автоматически обернута в responseentity со статусом ответа 200 OK.
На самом деле это зависит от типа контроллера.
Нет, если вы аннотируете свой метод с помощью @ResponseBody
Верно, но это не было частью вашего ответа. Ваш ответ предполагал @RestController.
Либо restcontoller, либо responsebody выполнят работу, я не знаю, в чем проблема
В вашем первоначальном ответе упоминался контроллер нет restcontoller (который вы изменили, как я вижу).
Дело вкуса :)