我正在为一个考试项目开发API,但我希望他们的响应在所有这些项目上都一致地使用 Package 类(对那些了解他们的人来说,是Telegram Bot API风格)。
例如,有这两个类:
public class User {
public int id;
public String name;
}
public class Item {
public int id;
public String itemName;
public User owner;
}
Spring返回给我的是以下输出:
{
"id": 1,
"itemName": "theItem",
"owner": {
"id": 2,
"name": "theUser"
}
}
我想要的是返回以下输出:
{
"ok": true,
"data": {
"id": 1,
"itemName": "theItem",
"owner": {
"id": 2,
"name": "theUser"
}
}
}
可能使用如下的类 Package 器:
public class ResponseWrapper<T> {
public boolean ok;
public T data;
}
有可能做到这一点吗?
2条答案
按热度按时间r1zhe5dt1#
我知道你需要一个全局设置来将所有的响应转换成标准的响应。为此,你可以实现ResponseBodyAdvice,并为所有的api响应提供一个通用的结构。请参考这个link以获得详细的示例
编辑:对于spring-webflux,您可以扩展 *
ResponseBodyResultHandler
* 并覆盖handleResult
。6ojccjat2#
我感谢@JustinMathew的帮助,最后,在我的例子中(使用Spring WebFlux和Kotlin),ResponseBodyResultHandler类对我更有用。
第一个
编辑:我将此答案作为Spring WebFlux 2.7.3 here的一个库。
**P.S.**我也从另一个question中得到了启示,它面临着同样的问题,但使用Java。