Каков наилучший способ вернуть единый ответ для каждого API в Spring Boot?

#java #spring #spring-boot #api

#java #весна #spring-boot #API

Вопрос:

Я хочу знать наилучший способ вернуть единообразный ответ для каждого API. Например:

В случае успеха он должен ответить:

 {
  statusCode: 200,
  message: "customMessage",
  results: [{...}]
}
 

В случае сбоя он должен ответить (например):

 {
  statusCode: 404,
  message: "customMessage",
  results: []
}
 

Является ли хорошей идеей использовать ResponseBodyAdvice или лучше создать, например SuccessDTO , или ErrorDTO и возвращать непосредственно из каждого метода контроллера.

Я бы приветствовал несколько примеров ResponseBodyAdvice , если это лучшее решение.

Комментарии:

1. Вам действительно нужно SuccessDTO ? Для этого просто используйте код состояния HTTP и возвращайте результаты.

Ответ №1:

  1. Создайте SuccessDTO и верните его для всех успешных сценариев.
     {
    
      "data": {
        "name": "Ram",
        "id": "101"
      },
      "message": "user has been added",
      "status": 200,
      "timeStamp": "2021-12-02T14:51:35.733 00:00",
      "path": "/api/v1/user/"
    
    }
     

    Примечание: — Поле данных будет содержать данные ответа

  2. Создайте ErrorDTO и возвращайтесь для случаев сбоя / исключения (лучше использовать рекомендации контроллера).
     {
        "message":"Not be able to add user"
        "status":400
        "timeStamp":"2021-12-02T14:51:35.733 00:00"
        "path":""/api/v1/user/"
    }
     

    Примечание: В случае ошибки / исключения поля данных не будет.

Аналогичные сведения доступны по ссылке ниже.

https://medium.com/codestorm/custom-json-response-with-responseentity-in-spring-boot-b09e87ab1f0a