Swagger @ApiParam не работает, когда передается значение null - PullRequest
0 голосов
/ 03 января 2019

У меня есть следующее:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Path("/some/path")
void createSomething(@ApiParam(required = true) @Valid final User user);

А User это что-то вроде

class User {
    @Valid
    @NotNull
    @NotBlank
    final String name;

    ...
}

Я получу обратно 400, если сделаю curl -X POST -H "Content-Type: application/json" /some/path -d '{"foo":"bar"}'.

Однако, если я не отправляю что-либо, то я не получаю 400, то есть curl -X POST -H "Content-Type: application/json" /some/path не приводит к 400 (а позже приводит к 500, потому что объект user теперь нулевой.

Что я делаю не так?

1 Ответ

0 голосов
/ 03 января 2019

Аннотации Swagger не выполняют никакой проверки входных данных на стороне сервера - они используются только для создания документа Swagger. Затем вам нужно каким-то образом создать пользовательский интерфейс из сгенерированного документа Swagger (например, с помощью Springfox swagger-ui, если используется Spring Boot https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui). И, наконец, если пользовательский интерфейс сформирован правильно, пользовательский интерфейс выполнит проверку.

Так как в примерах вы отправляли запросы с использованием Curl, аннотации сваггера ничего не делают (потому что вы не отправляете запросы через пользовательский интерфейс Swagger), и, таким образом, вы можете отправлять нулевое значение. Чтобы выполнить проверку на стороне сервера, вы должны использовать другие аннотации.

...