【问题标题】:how to bind different POST objects with one request mapping in Spring?如何在 Spring 中将不同的 POST 对象与一个请求映射绑定?
【发布时间】:2015-08-19 14:36:54
【问题描述】:

这是我的网址的样子

http://localhost/controller/check

这里是请求映射

 @RequestMapping(method = RequestMethod.POST)
 public Data check(@RequestBody final Check checkRequest, final HttpServletResponse servletResponse) {
    // service layer
 }

现在我希望Check 对象处理以下两个 POJOS。

public class Check {
    String name;
    String email;
}

public class Check {
    int age;
    Location location;
}

请求映射应处理以下POST 正文。

{"age" : 23, "location" :{ "region": XXX, "country":"xxx", "zipcode":xxx}

{"name": "yyyy", "email":"hello@bar.com"}

这里推荐的方法是什么?

【问题讨论】:

    标签: spring spring-mvc spring-restcontroller


    【解决方案1】:

    如果有意义,只需将属性组合到 1 个类中。 json 映射将与缺少的属性一起工作,将被映射为 null。

    如果您仍然需要 2 个不同的模型,请创建一个名为 CheckRequest 的包装器,其中包含 2 个成员变量 checkName 和 checkLocation 并发布适当的 json

    【讨论】:

    • Check 之一已在使用中。所以无法更改
    • 那我建议你创建一个包装器
    • 客户端已经在使用 Check 对象。如果我创建一个包装器,那么客户端需要使用包装器来发送传入的 POST 对象。如果不是,请在代码中解释您的意思
    【解决方案2】:

    我将扩展Check 类并将新扩展的类放入请求正文中。

    【讨论】:

      猜你喜欢
      • 2023-02-23
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2018-02-10
      • 1970-01-01
      • 2019-03-12
      相关资源
      最近更新 更多