为了账号安全,请及时绑定邮箱和手机立即绑定

如何强制在 Spring Rest MVC 中需要 bean 请求参数?

如何强制在 Spring Rest MVC 中需要 bean 请求参数?

千巷猫影 2021-10-28 10:12:19
我将 Spring 5 用于 REST API,但我无法获得如何标记所需的请求参数,以便 Spring 进行回复400 Bad request而不是让请求到达控制器方法。我的方法使用 bean 来接收查询字符串参数,所以@RequestParam(required=true)这里不是一个选项:@GetMapping(path="")public String findAll(Filter filter) {    // ...}AFilter看起来像这样:public class Filter {    private String id;    private String usersId;    private GregorianCalendar dayStart;    private GregorianCalendar dayEnd;    // ...}我想要求 ie 只是usersId强制性的。有没有类似的东西,或者我应该手动验证输入?
查看完整描述

2 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

你可以使用这样的东西


@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;


    // ...


}

您还应该确保


验证已启用

您的 bean 以应用验证规则的方式实例化


查看完整回答
反对 回复 2021-10-28
?
RISEBY

TA贡献1856条经验 获得超5个赞

您可以使用用户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;


    // ...

}

有关验证的更多详细信息,请查看此处


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信