繁体   English   中英

Spring将@RequestBody绑定到其他数据类型

[英]Spring Bind @RequestBody to other data types

看到一个JSON RequestBody绑定到POJO是很常见的,如下所示:

@RequestMapping(value="/users", headers="Accept=application/json",method=RequestMethod.POST)
public void create(@RequestBody CustomerInfo customerInfo){
...
}

是否可以将@RequestBody绑定到非POJO,但绑定到其他数据类型,例如原始和非原始数据类型?

例如:

@RequestMapping(value="/users", headers="Accept=application/json",method=RequestMethod.POST)
public void create(@RequestBody Set<Integer> ids){
...
}

对的,这是可能的。

根据您的示例,

public void create(@RequestBody Set<Integer> ids){
    ...
}

它会收到像[1,2,3]类的东西,因为请求体非常好。

再举一个原始的例子

public void create(@RequestBody int id) {
    ...
}

作为请求主体,它将收到类似1的信息。

但是,对于后一个示例,我不会说它是application/json

每个文档:

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestbody

您可以使用Java对象尝试作为@RequestBody的类型参数。 话虽如此,我认为没有对原语的支持。

根据文档,您可以选择以下选项:

RequestMappingHandlerAdapter通过以下默认HttpMessageConverters支持@RequestBody批注:

  • ByteArrayHttpMessageConverter转换字节数组。
  • StringHttpMessageConverter转换字符串。
  • FormHttpMessageConverter将表单数据与MultiValueMap之间进行转换。
  • SourceHttpMessageConverter可与javax.xml.transform.Source之间进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM