我试图设置一个可以接受单个对象或相同类型对象列表的端点。
我尝试过用两种数据类型声明两种方法,但是Spring并不喜欢(无法启动服务器)
@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> single(@RequestBody Something something){
return ResponseEntity.ok("ok");
}
@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> multiple(@RequestBody List<Something> somethingList){
return ResponseEntity.ok("ok");
}
我最接近的是接受Something []并宣布一种方法。
@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> somethingArray(@RequestBody Something... something){
return ResponseEntity.ok("ok");
}
问题:有没有办法在不必仅接受对象的情况下手动执行反序列化?
编辑:我也尝试了多个@RequestBody,即@RequestMapping(
value = "",
method = RequestMethod.POST ,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE
)
public ResponseEntity<Object> somethingArray(@RequestBody(required = false) Something something, @RequestBody(required = false) Something[] somethingArray){
return ResponseEntity.ok("ok");
}
答案 0 :(得分:0)
您可以创建一个接收String的方法。然后,您需要分析一个String,将其封送到一个Object,并根据结果类型调用一个私有方法。 但我的意思是错误的做法。更好地为不同的参数定义不同的端点。
答案 1 :(得分:0)
在执行此操作时,我通常会创建一个复数端点。
如果我要添加客户,则端点将是/ customer,如果它是List I do / customers。
据我所知,您不能通过参数类型重载请求方法。