【问题标题】:Is there a way to recieve an object or a list in the same param of a REST call?有没有办法在 REST 调用的同一参数中接收对象或列表?
【发布时间】:2019-06-21 11:17:07
【问题描述】:

在 java 中,您可以在函数中添加 3 个点来表示它可以接收一个或多个对象,我正在尝试在休息调用中实现这一点

@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 服务的角度来看,这基本上是我想要实现的

【问题讨论】:

    标签: java json spring list spring-restcontroller


    【解决方案1】:

    这基本上是你想要的一个糟糕的设计。根据 REST 标准,PUT 应该只接受 JSON 而不是 List。

    但是如果你坚持使用 List,你应该只支持 Request body 中的 List。对于发送对象 {},将其作为一个对象 [{}] 的数组发送。

    【讨论】:

    • 嗯,这更多是为了好玩和尝试新事物或“奇怪”的东西,我的想法是使用 3 个点来接收对象或列表,我想接收列表,因为UI 可能会同时向我发送要更新或保存的对象列表。
    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2020-09-12
    • 2022-10-12
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多