gpt4 book ai didi

spring-mvc - Spring MVC : Applying different JSON serializer for different annotated controller method

转载 作者:行者123 更新时间:2023-12-04 14:23:44 28 4
gpt4 key购买 nike

我正在使用带注释的 Controller 和内容协商 (@ResponceBody) 创建 REST 服务。我有两种不同的 Controller 方法返回 {{Foo}} 的实例,用于不同的用例,我希望 {{Foo}} 的 JSON 表示对于这些方法是不同的。

例如:

@ResponseBody
public Foo method1() {... return new Foo(123); } // should produce '123'
@ResponseBody
public Foo method2() {... return new Foo(123); } // should produce '{name:"Foo", number:123}'

当然,我可以使用 DTO 模式并在不同的方法中返回不同的 DTO(例如分别为 {{FooDTO1}} 和 {{FooDTO2}}),并且只需为这些 DTO 注册不同的 JSON 序列化程序。但我想知道是否有更好的方法,对我来说,定义两个额外的 DTO 类并创建这些类的一次性实例只是为了应用适当的 JSON 序列化程序,这感觉是错误的。
我不能以某种方式暗示 Spring 或 Jackson 应该在哪种情况下使用哪个序列化程序?

最佳答案

正如@CodeChimp 所建议的,不同的请求内容类型可用于在同一资源的不同表示之间切换。它符合 REST 理念,并由 Spring 直接支持。因为它依赖于内容类型来选择序列化程序。
所以,我需要做的就是为类 Foo 注册两个序列化程序。每个都绑定(bind)到不同的内容类型。
例如。 application/json-vnd.myCompany.com+type1表示将由 Serializer1 产生和 application/json-vnd.myCompany.com+type2来自 Serializer2因此。然后由客户决定选择哪种表示形式。

关于spring-mvc - Spring MVC : Applying different JSON serializer for different annotated controller method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17030335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com