在Java中,您可以在函数中添加3个点,以表示它可以接收一个或多个对象,而我正在尝试通过rest调用实现这一点
@PutMapping(value = FIELD_SAVE_URI)
@Secured(CdsPermissionDefinition.CDS_MODIFY)
public ResponseEntity<DefaultFieldDto> saveField(@RequestBody @NotNull DefaultFieldDto... fields){
//TODO impl
return ResponseEntity.ok(new DefaultFieldDto());
}
现在,如果我不发送列表[],服务器会给我一个错误,但是我希望该选项可以在同一参数中接收对象{}或列表[]
void test(){
a();
a(new DefaultFieldDto());
a(new DefaultFieldDto(), new DefaultFieldDto(), new DefaultFieldDto());
}
private void a(DefaultFieldDto... fields){
//Do something
}
从REST服务的角度来看,这基本上就是我要实现的
答案 0 :(得分:1)
这基本上是您想要的错误设计。根据REST标准,PUT应该只接受JSON,而不接受List。
但是,如果您坚持使用列表,则应仅在请求正文中支持列表。对于发送对象{}的情况,将其作为一个对象[{}]的数组发送。