在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服务的角度来看,这基本上就是我要实现的
最佳答案
从根本上来说,这是一个糟糕的设计。根据REST标准,PUT应该只接受JSON,而不接受列表。
但是,如果您坚持使用列表,则应仅在请求正文中支持列表。对于发送对象{}的情况,将其作为一个对象[{}]的数组发送。
关于java - 有没有办法在REST调用的同一参数中接收对象或列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56702395/