java - 使用通用 'header' 增强 Spring Rest API

标签 java json spring rest jackson

我有许多 Spring REST 端点都需要返回具有以下结构的 JSON:

"code": 0,
"status": "SUCCESS",
"debug": {
    ...
},
"someData": {
    ...
}

状态、代码和调试部分是每个响应的通用“ header ”,但“someData”是特定于每个端点的,具有 每个响应的不同名称,在某些情况下,名称由响应中相同级别的多个元素组成。

特别是成功响应的状态和代码始终相同。 (请注意,还有一个全局 @ControllerAdvice 用于处理返回状态/代码/消息错误响应的自定义和未捕获的异常)。

显然,我们可以简单地为每个 Controller 创建新的 POJO,这些 Controller (比如说)扩展一些包含通用内容的基类并添加细节让 Spring/Jackson 完成其余的工作(没有双关语意)。

但我希望有一些巧妙的方法可以用通用代码/状态/调试位“装饰”特定响应。 AOP 似乎有些矫枉过正,自定义 Jackson 转换器也是如此。

请注意,我们无法更改要求(例如使用“正确的”HTTP 响应代码、 header 等),因为它是一个现有的实时 API。

最佳答案

我建议为您期望的每种响应类型设置一个单独的类。如果它们都包含代码/状态/调试,则有一个基类并设置每个响应类型以扩展该基类。

此外,REST 设置为不仅包含响应主体,还包含响应 header 和响应状态代码 ( Link to glossary on w3.org ),其中一些是标准的。其他自定义代码也有足够的空间。与其在响应正文中包含代码和状态,不如设置代码呢?

关于java - 使用通用 'header' 增强 Spring Rest API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34024560/

相关文章:

java - 如何在线程内更改 View

java - 检测 JTable 中是否正在编辑任何单元格

java - Android 中的 Java 解析 JSON 数据

python - celery - 类型错误 : Object of type bytes is not JSON serializable

java - Spring addFormatters 未调用 WebMvcConfigurerAdapter

java - 枚举超过静态初始化程序的 65535 字节限制......最好做什么?

java - FXML 文件生成 GridPane 默认属性 LoadException

php - 将 php json 对象保存到 jquery 变量中

Java - 我需要一个自定义 spring 过滤器,应在 http 响应后调用

java - 在Spring Data JPA中获取列的所有记录,即使我们将其指定为参数