从 Spring Boot 应用程序的服务层中的请求中获取标头

2022-09-03 17:27:34

在春季启动中,有没有办法在任何应用程序点从请求中获取标头?一些静态的东西会很棒。

请注意,这对我不起作用,因为我在服务层上需要这个值。@RequestHeader


答案 1

您可以在服务层中注入对象,如下所示:HttpServletRequest

@Autowired
HttpServletRequest request;

private void method() {
  request.getHeader("headerName");
}

但请记住,该bean具有HTTP请求范围。因此,您无法将其注入异步方法等,因为它将.HttpServletRequestthrow Runtime Exception

希望它有帮助。


答案 2

我之前搜索过同样的问题,我发现你可以在RestController方法中使用标头参数,就像你说的那样@RequestHeader。那么为什么不将它们定向到您的服务层方法中:

@Autowired
ServiceLayerObj serviceLayerObj;
...
@RequestMapping
public YourReturnObj someRestServiceMethod(
    @RequestBody SomeObj body,
    @RequestHeader(value = "username") String username
){
    return serviceLayerObj.yourServiceLayerMethod(body,username);
}