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

Edw*_*ges 4 validation spring spring-mvc bean-validation

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

obe*_*ies 8

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

所以下面的代码会自动检查标题“Header-Name”的存在......

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

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

@RequestHeader(name = "Header-Name", required = false)
Run Code Online (Sandbox Code Playgroud)

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

  1. 添加@Validated到控制器类。这是实现此功能之前所需的解决方法。
  2. 在请求头参数中添加 JSR-303 注释,例如

    @RequestHeader("Header-Name") @Pattern(regexp = "[A-Za-z]*") String headerValue
    
    Run Code Online (Sandbox Code Playgroud)

但是请注意,如果标头值无效,这将导致 500。检查此问题以了解如何获取此案例的正确状态代码(即 400)。


归档时间:

查看次数:

13279 次

最近记录:

6 年,9 月 前