簡體   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