截取@RequestHeader异常以获取缺少的标头

我在控制器中有一个具有参数的方法,例如

@RequestMapping(value = "/{blabla}", method = RequestMethod.POST)

@ResponseStatus(HttpStatus.CREATED)

public void post(@RequestHeader("ETag") int etag)

如果请求中没有ETag标头,则客户端获取400(BAD_REQUEST),这没有任何意义。我需要以某种方式处理此异常并将自己的异常发送给客户端(为此,我使用JSON)。我知道我可以通过@ExceptionHandler拦截异常,但是在那种情况下,所有HTTP

400请求都将得到处理,但是我希望标头中缺少ETag。有任何想法吗?

回答:

您应该使用@ExceptionHandler方法,该方法查看是否存在ETag标头并采取适当的措施:

@ExceptionHandler(UnsatisfiedServletRequestParameterException.class)

public onErr400(@RequestHeader(value="ETag", required=false) String ETag,

UnsatisfiedServletRequestParameterException ex) {

if(ETag == null) {

// Ok the problem was ETag Header : give your informational message

} else {

// It is another error 400 : simply say request is incorrect or use ex

}

}

以上是 截取@RequestHeader异常以获取缺少的标头 的全部内容, 来源链接: utcz.com/qa/427118.html

回到顶部