截取@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