Spring REST多个@RequestBody参数,可能吗?

Posted

技术标签:

【中文标题】Spring REST多个@RequestBody参数,可能吗?【英文标题】:Spring REST multiple @RequestBody parameters, possible? 【发布时间】:2011-08-09 06:06:21 【问题描述】:

我已经实现了一个 Spring RESTful Web 服务。使用 Jackson JSON 进行对象映射。我有一个接受两个参数的方法。

public Person createPerson(
    @RequestBody UserContext userContext,
    @RequestBody Person person)

客户端如何构造一个请求,其中多个 JSON 对象将在正文中传递?

这可能吗?

-- 斯里

【问题讨论】:

【参考方案1】:

我很确定那是行不通的。可能有一种解决方法,但更简单的方法是引入包装对象并更改您的签名:

public class PersonContext
    private UserContext userContext;
    private Person person;
    // getters and setters



public Person createPerson(@RequestBody PersonContext personContext)

【讨论】:

@Srirangan:workarround 是 PersonContext 类 - 它是某种 DTO 我觉得问这个问题很愚蠢。 HTTP 请求如何有多个“主体”。啊。 2011-我很愚蠢。 @Srirangan 别担心,我们都去过那里 :-) @Sri,不过谢谢你的提问,它帮助了我们因为被深陷而不得不快速拿起 Spring。 This question 类似,有更详细的答案,你可能想链接。 @nonNumericalFloat 当然,只需使用自定义JsonDeserializer 实现用@JsonDeserialize 注释任何字段

以上是关于Spring REST多个@RequestBody参数,可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

spring rest @RequestBody 不使用 @Valid 验证

不支持 Spring Rest POST Json RequestBody 内容类型

如何在 Spring Boot REST API 中启用对 JSON / Jackson @RequestBody 的严格验证?

@RequestBody 不适用于 Rest 服务

spring 通过@responsebody接收多个对象参数

使用 Ajax 将 @RequestBody 中的多个变量传递给 Spring MVC 控制器