Способы создания объекта класса ResponseEntity при весенней загрузке

Я новичок в весенней загрузке, и я пытаюсь создать методы обработчика для создания 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 в методе обработчика с помощью конструкторов или с помощью метода сборки () и почему? Кто-нибудь, пожалуйста, помогите здесь. Какой способ производства наиболее предпочтителен?

Дело вкуса :)

Sergey Vasnev 09.04.2021 21:33

Дело в том, что на самом деле вы могли бы даже записать ResponseEntitiy.ok("Body"); или ResponseBody.ok().body("Body");, которые были бы более четкими и краткими.

M. Deinum 09.04.2021 21:41

Обратите внимание, что если вы делать используете status (что необходимо для менее распространенных, таких как 429), рекомендуется статически импортировать значения перечисления, потому что код более читабелен.

chrylis -cautiouslyoptimistic- 09.04.2021 22:26

В этом случае я бы просто вернул String, например, public String stack (). Я определяю возвращаемый объект ResponseEntity только тогда, когда мне нужно что-то добавить к нему в этом методе. Однако все 3 способа дадут одинаковые результаты.

Flips 09.04.2021 23:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
27
3

Ответы 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.

На самом деле это зависит от типа контроллера.

M. Deinum 09.04.2021 21:41

Нет, если вы аннотируете свой метод с помощью @ResponseBody

Krzysztof K 09.04.2021 21:43

Верно, но это не было частью вашего ответа. Ваш ответ предполагал @RestController.

M. Deinum 09.04.2021 21:44

Либо restcontoller, либо responsebody выполнят работу, я не знаю, в чем проблема

Krzysztof K 09.04.2021 21:45

В вашем первоначальном ответе упоминался контроллер нет restcontoller (который вы изменили, как я вижу).

M. Deinum 09.04.2021 21:50

Другие вопросы по теме