【发布时间】:2015-12-01 15:57:07
【问题描述】:
我有许多 Spring REST 端点,它们都是返回具有以下结构的 JSON 所必需的:
"code": 0,
"status": "SUCCESS",
"debug": {
...
},
"someData": {
...
}
状态、代码和调试部分是每个响应的通用“header”,但“someData”特定于每个端点,有一个每个响应都有不同的名称,并且在某些情况下由响应中相同级别的多个元素组成。
特别是成功响应的状态和代码总是相同的。 (请注意,还有一个全局 @ControllerAdvice 用于处理返回状态/代码/消息错误响应的自定义和未捕获的异常)。
显然,我们可以简单地为每个控制器创建新的 POJO,这些控制器(例如)扩展一些包含通用内容的基类,并添加让 Spring/Jackson 完成其余工作的细节(没有双关语)。
但我希望有一些巧妙的方法可以用通用代码/状态/调试位“装饰”特定响应。 AOP 似乎太过分了,自定义 Jackson 转换器也是如此。
请注意,我们无法更改要求(例如,使用“正确”的 HTTP 响应代码、标头等),因为它是现有的实时 API。
【问题讨论】:
标签: java json spring rest jackson