使用 Spring 验证框架验证请求标头

2024-05-12

是否可以将 Spring 验证框架与 Spring MVC 结合使用来验证 HTTP 请求标头的存在和值?


要检查presence请求标头的,您不需要验证框架。请求标头参数默认是强制的,如果请求中缺少强制标头,Spring MVC 会自动响应 400 Bad Request。

因此,以下代码自动检查标头“Header-Name”是否存在......

@PostMapping("/action")
public ResponseEntity<String> doAction(@RequestHeader("Header-Name") String headerValue) {
    // ...
}

...如果标头是可选的,则注释需要替换为:

@RequestHeader(name = "Header-Name", required = false)

要检查value对于请求头,可以使用 Spring 验证框架。为此,您需要

  1. Add @Validated到控制器类。这是一个需要解决的方法,直到此功能 https://github.com/spring-projects/spring-framework/issues/11041已实施。
  2. 在请求头参数中添加JSR-303注释,例如

    @RequestHeader("Header-Name") @Pattern(regexp = "[A-Za-z]*") String headerValue
    

但请注意,如果标头值无效,这将导致 500。查看这个问题 https://stackoverflow.com/q/54905691/1523648了解如何获取本例的正确状态代码(即 400)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring 验证框架验证请求标头 的相关文章

随机推荐