jackson Spring WebFlux -在序列化之前添加 Package 类

aij0ehis  于 2022-11-08  发布在  Spring
关注(0)|答案(2)|浏览(151)

我正在为一个考试项目开发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;
}

有可能做到这一点吗?

r1zhe5dt

r1zhe5dt1#

我知道你需要一个全局设置来将所有的响应转换成标准的响应。为此,你可以实现ResponseBodyAdvice,并为所有的api响应提供一个通用的结构。请参考这个link以获得详细的示例
编辑:对于spring-webflux,您可以扩展 * ResponseBodyResultHandler * 并覆盖handleResult

6ojccjat

6ojccjat2#

我感谢@JustinMathew的帮助,最后,在我的例子中(使用Spring WebFlux和Kotlin),ResponseBodyResultHandler类对我更有用。
第一个

编辑:我将此答案作为Spring WebFlux 2.7.3 here的一个库。
**P.S.**我也从另一个question中得到了启示,它面临着同样的问题,但使用Java。

相关问题