Как добавить пользовательские атрибуты в ResponseEntity Spring Boot Rest api response - PullRequest
1 голос
/ 23 января 2020

Поскольку весенняя загрузка предоставляет ResponseEntity для представления HTTP-ответа для остальных API, включая заголовки, тело и состояние.

Мой RestController содержит метод getTodoById, как показано ниже -

@GetMapping("/todo/{id}")
 public Todo getTodoById(@PathVariable String id) {
        int todoId = Integer.parseInt(id);
        Todo todoItem = todoRepository.findById(todoId);
         ResponseEntity.ok(todoItem);
    }

It дает следующий ответ API на хит API (api / v1 / todo / 13).

{
    "id": 13,
    "title": "title13",
    "status": "not started"
}

Необходимо иметь общую настраиваемую структуру ответа для всех API в приложении, как показано ниже -

{
  "status": "success",
  "data": {
    "id": 13,
    "title": "title13",
    "status": "not started"
  },
  "error": null,
  "statusCode": 200
}

{
  "status": "failure",
  "data": {},
  "error": "bad request",
  "statusCode": 400
}

Как получить требуемую JSON структуру ответа с помощью ResponseEntity?

Я исследовал ее, но не смог найти решение, которое решило бы вышеуказанную проблему.

Любая помощь будет оценили. Спасибо

1 Ответ

0 голосов
/ 23 января 2020

Что ж, вместо возврата

ResponseEntity.ok(todoItem);

вам, очевидно, нужно вернуть что-то вроде

ResponseEntity.ok(new Response(todoItem));

с

public class Response {

    private String status = "success";

    private Object data;

    private String error;

    private int statusCode = 200;

    // Constructor, getters and setters omitted
}
...