如何使用 Spring Boot 修改 HttpServletResponse

我正在 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: 下面的很多答案都是针对控制器级别的。我希望使用过滤器在更高的执行级别处理此问题。假设身份验证失败,那么我的请求甚至不会到达控制器。在所有这些情况下,我想在一个地方实现成功和失败的消息,以便它清晰易懂。


RISEBY
浏览 496回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java