java - 如何在 Spring Boot Rest api 响应的 ResponseEntity 中添加自定义属性
问题描述
由于 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 响应结构?
我探索了它,但找不到解决上述问题的解决方案。
任何帮助,将不胜感激。谢谢
解决方案
好吧,而不是返回
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
}
推荐阅读
- html - 为什么我的 SVG 的圆圈没有完全显示?
- c++ - “codecvt_utf8_utf16”和“codecvt_utf8”从UTF-8转换为UTF-16的区别
- java - 不能在java中一起打印字符串和布尔值
- package - Julia:如何更新到最新版本的包(即 Flux)
- deep-learning - Gan损失很小,判别器损失巨大?
- java - 使用自定义绑定适配器绑定可绘制资源
- c# - Net core web api - “Microsoft.AspNetCore.Authentication.JwtBearer”包出错
- html - 来自 Safari 的 CSS 奇怪的变换值
- reactjs - 反应轮播/图像滑块
- reactjs - 如何设置纬度/经度增量以显示路线坐标?