如何在 Spring Boot Rest api 响应的 ResponseEntity 中添加自定义属性
Posted
技术标签:
【中文标题】如何在 Spring Boot Rest api 响应的 ResponseEntity 中添加自定义属性【英文标题】:How to add custom attributes in ResponseEntity of Spring Boot Rest api response 【发布时间】:2020-05-09 16:57:53 【问题描述】:由于 spring boot 提供了 ResponseEntity 来表示对 rest api 的 HTTP 响应,包括 headers、body 和 status。
我的 RestController 包含 getTodoById 方法,如下所示-
@GetMapping("/todo/id")
public Todo getTodoById(@PathVariable String id)
int todoId = Integer.parseInt(id);
Todo todoItem = todoRepository.findById(todoId);
ResponseEntity.ok(todoItem);
它在 api hit(api/v1/todo/13) 上给出以下 api 响应。
"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
如何使用 ResponseEntity 获得所需的 JSON 响应结构?
我探索了它,但找不到解决上述问题的解决方案。
任何帮助将不胜感激。 谢谢
【问题讨论】:
也许你可以从Spring Boot's tracing feature那里得到一些灵感? 【参考方案1】:好吧,而不是返回
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
【讨论】:
以上是关于如何在 Spring Boot Rest api 响应的 ResponseEntity 中添加自定义属性的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot JWT - 如何实现刷新令牌和注销 REST-API
如何在 Spring Boot REST API 中格式化返回的 json?
在 Spring-boot 中成功登录后如何限制 POST Rest Api 以供公共访问
如何在 Spring Boot Rest api 响应的 ResponseEntity 中添加自定义属性