Как заставить параметр запроса bean быть обязательным в Spring Rest MVC? - PullRequest
0 голосов
/ 05 октября 2018

Я использую Spring 5 для REST API, и я не могу понять, как пометить параметры запроса обязательно , чтобы Spring ответил 400 Bad request вместо того, чтобы запрос достиг метода контроллера.

Мои методы используют бин для получения параметров строки запроса, поэтому @RequestParam(required=true) здесь не вариант:

@GetMapping(path="")
public String findAll(Filter filter) {
    // ...
}

A Filter выглядит так:

public class Filter {

    private String id;

    private String usersId;

    private GregorianCalendar dayStart;

    private GregorianCalendar dayEnd;

    // ...

}

Я хотел бы потребовать, то есть просто usersId, чтобы быть обязательным.

Есть что-нибудь подобное или я должен вручную подтвердить ввод?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вы можете использовать javax.validation.Valid для проверки вашего компонента, и вместо использования @GetMapping вы можете использовать @PostMapping.

@PostMapping(path="")
public String findAll(@Valid Filter filter) {
    // ...
}

, а в вашем классе Filter вы можете использовать @NotNull изjavax.validation.constraints.NotNull и @NotEmpty из javax.validation.constraints.NotEmpty

public class Filter {

    private String id;

    @NotNull
    @NotEmpty
    private String usersId;

    private GregorianCalendar dayStart;

    private GregorianCalendar dayEnd;

    // ...
}

Для получения более подробной информации для проверки смотрите здесь

0 голосов
/ 05 октября 2018

Вы можете использовать что-то вроде этого

@GetMapping(path="")
public String findAll(@Valid Filter filter) {
    // ...
}

И на вашем Filter классе

public class Filter {

    private String id;
    @NotNull
    private String usersId;
    private GregorianCalendar dayStart;
    private GregorianCalendar dayEnd;

    // ...

}

Вы также должны убедиться, что

  • Проверка
  • Ваш компонент создается таким образом, что применяются правила проверки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...