首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当@有效主体不满足和@ExceptionHandler命中时获取标头

当@有效主体不满足和@ExceptionHandler命中时获取标头
EN

Stack Overflow用户
提问于 2021-07-28 03:50:37
回答 1查看 130关注 0票数 1

我对springboot还不熟悉,我正在从事一个遗留项目。我已经搜查过了,但没有找到答案。

当前工作项目使用@Valid @RequestBody验证主体,使用@ExceptionHandler捕获异常。

现在,新的要求是处理请求头,我将使用标头(例如,日志),而不管主体是否有效。

问题是,当@ExceptionHandler命中时,我不知道如何获得标头。类似的问题是如何在@ExceptionHandler (Spring )中获取@RequestBody,但我不知道如何从注入的RequestContext中获取标头(我甚至不能在答案中解析getRequestBody()方法)。

将最小、工作和可重复的代码推送到github

  • 模式:
代码语言:javascript
复制
public class Book {

  @NotBlank(message = "Title is mandatory")
  public String Title;
}
  • 主计长
代码语言:javascript
复制
@RestController
public class BooksController {

  final Log log = LogFactory.getLog(getClass());

  @PostMapping("/")
  public String add(@RequestHeader("id") String value, @Valid @RequestBody final Book book) {
    log.info(value); // want this value even when hit @ExceptionHandler
    return "added " + book.Title;
  }

  @ResponseStatus(HttpStatus.BAD_REQUEST)
  @ExceptionHandler(value = MethodArgumentNotValidException.class)
  public String handleInvalidRequest(final MethodArgumentNotValidException e) {
    //log headers; ??
    return e.getMessage();
  }

}
  • 客户
代码语言:javascript
复制
curl -H "id:123" -H "Content-Type: application/json" http://localhost:8080 --data '{"Title":""}' 
  • 附加信息 jdk 11,springboot 2.5.3,intellij idea 2021。 模型的代码位于一个我无法更改的库中,因此验证逻辑对我来说是未知的。

我想应该有很多解决方法,比如定义一些定制的中间件或句柄,但我不熟悉这些,我希望看到一个使用最少代码更改的解决方案。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-28 04:10:36

@ExceptionalHandler内部,您可以接受HttpServletRequest来获取标头

代码语言:javascript
复制
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public String handleInvalidRequest(final MethodArgumentNotValidException e, final HttpServletRequest req) {
  //log headers; ??
  req.getHeader("My-Header");
  return e.getMessage();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68554176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档