微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 拦截缺少标头的@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
    }
}

原文地址:https://www.jb51.cc/spring/431670.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐