简体   繁体   English

如何在Spring Rest MVC中强制使用bean请求参数?

[英]How to force a bean request parameter to be required in Spring Rest MVC?

I'm using Spring 5 for a REST API and I can't get how to mark request parameters required so that Spring would reply 400 Bad request instead of letting the request reach the controller method. 我使用的是REST API的Spring 5,但我无法获得如何标记要求的请求参数的方法因此Spring会回复400 Bad request而不是让请求到达控制器方法。

My methods use a bean to receive query string parameters, so @RequestParam(required=true) is not an option here: 我的方法使用bean来接收查询字符串参数,因此@RequestParam(required=true)在这里不是一个选择:

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

A Filter looks like this: Filter如下所示:

public class Filter {

    private String id;

    private String usersId;

    private GregorianCalendar dayStart;

    private GregorianCalendar dayEnd;

    // ...

}

I'd like to require ie just usersId to be mandatory. 我想只要求usersId是强制性的。

Is there anything like that or should I manually validate the input? 有没有类似的事情,还是我应该手动验证输入?

You could use something like this 你可以用这样的东西

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

And on your Filter class 在您的Filter类上

public class Filter {

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

    // ...

}

You should also make sure that 您还应确保

  • Validation is enabled 验证已启用
  • Your bean is instantiated in such a way the validation rules are applied 以应用验证规则的方式实例化bean

You can user javax.validation.Valid to validate your bean and instead of using @GetMapping you can use @PostMapping . 您可以使用javax.validation.Valid来验证您的bean,而不是使用@GetMapping ,而可以使用@PostMapping

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

and in your Filter class you can use @NotNull of javax.validation.constraints.NotNull and @NotEmpty of javax.validation.constraints.NotEmpty 并在Filter类,你可以使用@NotNulljavax.validation.constraints.NotNull@NotEmptyjavax.validation.constraints.NotEmpty

public class Filter {

    private String id;

    @NotNull
    @NotEmpty
    private String usersId;

    private GregorianCalendar dayStart;

    private GregorianCalendar dayEnd;

    // ...
}

For more detail for validation look at here 有关验证的更多详细信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如果它不是Spring MVC中的bean,如何验证请求参数? - How to validate request parameter if it is not a bean in spring MVC? Spring MVC Rest Web服务:在请求Bean中使用HashMap - Spring MVC Rest webservice: using HashMap in request bean 如何为Spring MVC端点创建包含所需请求参数的单元测试,该请求参数包含JSON字符串? - How do you create a unit test for Spring MVC endpoint containing a required request parameter that contains a JSON string? 如何为与Spring MVC框架一起使用的请求范围Bean修复BeanCreateException - How to fix BeanCreateException for a request scope bean used with Spring MVC framework Spring MVC中的Bean验证和请求的参数 - Bean Validation and requested parameter in spring mvc 日期作为 Spring REST 中的请求参数 - Date as a request parameter in Spring REST HTTP状态400-所需的简短参数'score'不存在,Spring MVC REST - HTTP Status 400 - Required short parameter 'score' is not present, Spring MVC REST Spring 5 中带有请求参数bean的自定义参数名称 - Custom parameter names with a bean for request parameters in Spring 5 Spring MVC @Bean 可以检查 HTTP 请求吗? - Can a Spring MVC @Bean inspect the HTTP Request? 发送多个参数 Ajax 字符串化请求时,所需的字符串参数“querycontent”不存在 - Required String parameter 'querycontent' is not present while sending multiple parameters Ajax stringify request with Jquery in Spring MVC Application
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM