在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/

10-11 11:04