【问题标题】:Custom validation of Spring request parameterSpring请求参数的自定义验证
【发布时间】:2020-09-15 10:29:04
【问题描述】:

我公开了一个接受value_param 作为请求参数的休息服务。如果 url 参数拼写不正确,则会引发以下异常:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Sep 15 10:57:54 IST 2020
There was an unexpected error (type=Bad Request, status=400).
Required String parameter 'value_param' is not present

我正在尝试显式检查参数。此参数检查与其他检查结合使用,任何验证检查失败,都会抛出 422 错误。

这里是端点签名:

   @GetMapping("/values")
    public List<ValueEntity> getValues(@RequestParam(name = "value_param") String valueParameter) {

如何访问value_param参数并防止抛出状态为400的错误页面?

【问题讨论】:

  • 可以将@RequestParamrequired属性设置为false,但是如果和其他验证结合起来,或许应该用单独的请求对象来处理?

标签: java spring spring-boot rest


【解决方案1】:

在控制器中将该字段标记为@RequestParam(required = false)
更详细的例子可以看:here

【讨论】:

  • 谢谢,如何访问服务调用者设置的传递参数名?那么如果 value_param 没有设置,确定传递了什么参数?
  • 如果你不传递参数,在这种情况下它将为空,你也可以设置defaultValue =“someValue”,这样就可以知道它什么时候通过,什么时候是默认值;
  • 如果我通过 ....?value_param_incorrect=test 我可以访问控制器 getValues 方法中的参数名称吗?在这种情况下,参数名称是 value_param_incorrect
猜你喜欢
  • 2020-04-12
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多