加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 拦截缺少标头的@RequestHeader异常

发布时间:2020-12-15 01:39:30 所属栏目:大数据 来源:网络整理
导读:我在控制器中有一个方法,例如有参数 @RequestMapping(value = "/{blabla}",method = RequestMethod.POST)@ResponseStatus(HttpStatus.CREATED)public void post(@RequestHeader("ETag") int etag) 如果请求中没有ETag标头 客户端获得400(BAD_REQUEST),这不是

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

@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
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读