Различные структуры ответа для разных кодов ответа «Success/2xx» — Spring boot

Разрешают ли стандарты микросервисной архитектуры/остального API разные структуры для разных кодов ответа, например, для 200 и 207?

Если да, то как я могу реализовать то же самое в моем приложении для весенней загрузки?

Вы имеете в виду, что одна и та же конечная точка может возвращать разные коды ответа 2xx или что у вас есть разные конечные точки, которые возвращают разные коды 2xx? Большая разница

Mor Blau 27.11.2022 10:07
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Интеграция Slack и Spring Boot: как отправлять сообщения из Java-приложений
Интеграция Slack и Spring Boot: как отправлять сообщения из Java-приложений
Как отправлять сообщения в slack с помощью spring boot легко и без зависимостей.
1
1
80
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ответ - да, например, подумайте о коде ответа 200 и коде ответа 404: с первым будет возвращен действительный объект, а для второго - должен быть возвращен какой-либо объект ошибки. Совершенно разные структуры. Насчет реализации, конечно есть много способов, рекомендую посмотреть на ResponseEntity.

Мой вопрос касается сравнения между 200 и 207. Я знаю об обработке исключений.

user1354825 21.11.2022 13:33

@user1354825 user1354825 ответ idanz - это все, что вам нужно, это зависит от вашей реализации, чтобы решить, когда отправлять 200, 204, 207. если вы ищете прозрачный способ заставить Springboot сделать это за вас, то его нет.

Sombriks 21.11.2022 13:37

@Sombriks, поэтому вы рекомендуете использовать универсальный тип или тип суперкласса или, скажем, строку / объект в качестве возвращаемого типа?

user1354825 21.11.2022 13:42

@ user1354825 Я бы рекомендовал использовать класс ResponseEntity, как описано в ответе. Обратите внимание, что он является общим, поэтому вы можете вернуть его с разными типами (T) для разных кодов ответа.

idanz 21.11.2022 14:30

@idanz Хороший вопрос, и я бы даже сказал, что для одного кода ответа 200 OK я ожидаю, что большинство конечных точек в полезном приложении будут возвращать разные структуры.

crizzis 25.11.2022 13:13

Я предполагаю, что указание правильного кода ошибки (200/207 и т. д.) будет находиться в компетенции бизнес-логики. Вы можете сделать следующее:

  1. ResponseEntity<Object> должен быть типом возвращаемого значения вашего метода контроллера.

  2. Верните Spring ResponseEntity после манипуляций, как показано в примере. Для более распространенных у Spring есть встроенные методы (показаны для 200 и 204). Для пользовательских кодов ошибок Spring позволяет вручную создать объект с необходимыми параметрами.

    @GetMapping(path = "/demo/example")
     public ResponseEntity<Object> getData (
            @RequestParam(name = "auth_id") String authId
    ) {
    //Logic
    //200
    //return ResponseEntity.ok().body(objFor200Response);
    
    //204
    //return ResponseEntity.accepted().body(objFor204Response);
    
    //207
    //return new ResponseEntity<>(objFor207Response,HttpStatus.MULTI_STATUS);
    

    }

Надеюсь, это ответит на ваш вопрос, удачного кодирования :)

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