相关疑难解决方法(0)

在请求标头验证错误的情况下,让 Spring 响应 400(而不是 500)

当对 Spring MVC@RequestMapping方法的参数进行验证时,Spring 根据参数的类型以不同的状态代码进行响应:

  • 对于无效@RequestBody参数,Spring 响应 400
  • 对于无效的@RequestHeader@PathVariable、 和@RequestParam参数,Spring 响应 500。

是否可以对此进行更改,以便 Spring 在所有情况下都以相同的 400 响应进行响应?


这是我的代码:

@Controller
@Validated
public class WebController {

    @RequestMapping(method = RequestMethod.POST, path = "/action")
    public ResponseEntity<String> doAction(
            @RequestHeader("Header-Name") @Valid LatinString headerValue,
            @RequestBody @Valid Struct body) {
        return new ResponseEntity<>(HttpStatus.OK);
    }
}
Run Code Online (Sandbox Code Playgroud)
public class LatinString {

    @Pattern(regexp = "[A-Za-z]*")
    private String value;

    public LatinString(String value) {
        this.value = value;
    }

    public String getValue() {
        return value; …
Run Code Online (Sandbox Code Playgroud)

validation spring spring-mvc bean-validation spring-boot

6
推荐指数
1
解决办法
8780
查看次数