我使用的是REST API的Spring 5,但我不知道如何标记请求参数必需,以便Spring会回复400 Bad request
而不是让请求到达控制器方法。
我的方法使用bean来接收查询字符串参数,因此@RequestParam(required=true)
在这里不是一个选择:
@GetMapping(path="")
public String findAll(Filter filter) {
// ...
}
Filter
看起来像这样:
public class Filter {
private String id;
private String usersId;
private GregorianCalendar dayStart;
private GregorianCalendar dayEnd;
// ...
}
我想只要求usersId
是必需的。
是否有类似内容?还是应该手动验证输入内容?
答案 0 :(得分:0)
您可以使用类似的东西
@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;
// ...
}
您还应确保
答案 1 :(得分:0)
您可以使用javax.validation.Valid
来验证您的bean,而可以使用@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;
// ...
}
有关验证的更多详细信息,请查看here