我正在 Spring Boot 中编写一个 REST API 应用程序。我希望我的 json 响应的签名是这样的:
示例:1
{
"status": "Error"
"httpcode": 500
"dev_message": "ServerException"
"user_message": "Oops..something went wrong with the app. Please try again."
"response": {
...
}
}
示例:2
{
"status": "Success"
"httpcode": 200
"dev_message": "APICallSuccess"
"user_message": "Successfully called API"
"response": {
"userid": "test",
"age": 31
...
"country": "India"
}
}
其中status, httpcode, dev_message和user_message在请求生命周期的不同阶段动态更新。例如,授权过滤器应该更新的httpstatus领域401,并dev_message以AuthException如果API凭证不正确。另一方面,如果用户试图访问他不允许的其他用户的数据等,控制器应该更新字段。
我在这里有两部分问题:
如何在 Spring MVC / Spring Boot 中实现这一点?我知道这涉及RequestHandlerInterceptor,Filters但信息太多,我无法缩小范围。
这是构建我的 API 的正确方法吗?我希望客户真正知道出了什么问题,而不仅仅是返回 http 状态代码。
编辑 1: 下面的很多答案都是针对控制器级别的。我希望使用过滤器在更高的执行级别处理此问题。假设身份验证失败,那么我的请求甚至不会到达控制器。在所有这些情况下,我想在一个地方实现成功和失败的消息,以便它清晰易懂。
相关分类