【问题标题】:How to automatically validate rest parameters in @RestController?如何在@RestController 中自动验证剩余参数?
【发布时间】:2015-03-03 12:10:04
【问题描述】:

我想自动验证 spring REST 服务上的 REST 参数。

我用@Valid @NotNull试过了,但是其余的请求没有被自动拒绝,但是dao方法是用null参数执行的。为什么?

@RestController
public class RestController {
    @RequestMapping(value = "/")
    public Boolean getResponse(@Valid @NotNull @Length(max = 20) String username) {
          return daoService.lookup(username); //is executed if username = null
    }
}

如何自动获取返回的 HTTP 错误,例如 400?

【问题讨论】:

  • 我认为您只是缺少@RequestBody,尽管不确定 Spring 是否可以验证输入字符串。

标签: java spring rest


【解决方案1】:

这是一个验证请求参数的示例..

public ResponseEntity<AgencyResource> saveAgency(
    @Valid @RequestBody AgencyResource agencyResource) {
 return new ResponseEntity<AgencyResource>(agencyResource, HttpStatus.OK);
 }

这是来自 POST http://www.leveluplunch.com/java/tutorials/017-validate-spring-rest-webservice-request/

希望这会有所帮助。

谢谢, 保罗

【讨论】:

  • 所以我必须将我的参数包装在一个复杂的对象中?我认为我也可以在字符串上实现验证?
  • 我不确定通过注释对字符串进行简单验证。您还可以编写一个自定义验证器 ..kinda like..stackoverflow.com/questions/16544265/…
  • 你可能已经知道这个了..但是@RequestParam(value = "regNo", required = true)..你可以这样做..但据我所知,这只检查所需的参数..除非您编写验证器,否则不确定它是否可以进行最小/最大长度检查。
  • 我不知道这一点,如果参数丢失(这是我的主要要求),确保我的方法不会被调用可能很好。
猜你喜欢
  • 2022-08-23
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-05-01
  • 2021-11-15
  • 2014-05-16
  • 2019-12-31
相关资源
最近更新 更多