我想在spring boot应用程序中使用此api:
职位/项目
{
"name": "item1"
}
职位/项目
[
{
"name": "item1"
},
{
"name": "item2"
},
]
因此,同一个端点可以接受数组或json体中的单个元素。
不幸的是,这不起作用:
@PostMapping(path="items")
public ResponseEntity<String> items(@RequestBody Item item) {}
@PostMapping(path="items")
public ResponseEntity<String> items(@RequestBody List<Item> items) {}
我也试过这个:
@PostMapping(path="items")
public ResponseEntity<String> items(@RequestBody @JsonFormat(with= JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) List<Item> items) {}
它不起作用。
如果我把清单 Package 成:
public class Items {
@JsonFormat(with= JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
private List<item> items;
}
不幸的是,我的请求主体看起来像:
{
"items": [
{
"name": "item1"
},
{
"name": "item2"
},
]
}
你知道我怎么能用SpringBoot拥有这样的api吗?
1条答案
按热度按时间cyvaqqii1#
您需要一个可以直接保存数组或对象的变量。由于java的静态类型限制,没有直接的方法可以实现这样的功能。
到目前为止,我所能想到的实现这种功能的唯一方法是创建一个采用某种泛型类型的api。
就像一个
Object
:或者
String
:你得手工做很多工作。
此外,不能使用同一路径创建两个api
/items
同样的方法POST
,它们将引发编译时错误。