Есть ли способ получить объект или список в том же параметре вызова REST? - PullRequest
0 голосов
/ 21 июня 2019

В 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

1 Ответ

1 голос
/ 21 июня 2019

Это в основном плохой дизайн, за который вы идете. Согласно стандартам REST PUT должен принимать только JSON, а не List.

Но если вы настаиваете на List, вы должны поддерживать только List в теле запроса. А в случае отправки объекта {}, отправьте его как массив одного объекта [{}].

...