【问题标题】:how to Enforce request header on all spring web RestController equests如何在所有 Spring Web RestController 请求上强制执行请求标头
【发布时间】:2018-11-29 10:07:20
【问题描述】:

是否有一个选项可以在 spring web RestController 中指定一次请求标头,而不是在每个请求上都这样做?

e.q.

@RestController("workflowController")
public class MyClass{

public Value list(@RequestHeader(USER_ID_HEADER_PARAM) String user) {
    ...some code
}

public Workflow create(@RequestBody Workflow workflow, @RequestHeader(USER_ID_HEADER_PARAM) String user) {
    ... some code
}

}

@RequestHeader(USER_ID_HEADER_PARAM) 将在每个请求中重复。 有没有办法在@RestCotroller 级别或类级别指定它?

谢谢

【问题讨论】:

  • 假设如果你能够在课堂上做到这一点,你将在哪里捕获该标题?这不可能。因为您需要一个变量来保存此标头。这正是 RequestHeader 具有 @Target(ElementType.PARAMETER) 的原因,这意味着您只能在参数级别使用它。

标签: spring-boot spring-restcontroller spring-web


【解决方案1】:

使用某种过滤器类,该过滤器类可配置为根据 URL 路径在 servlet 中环绕您的请求。

以下是有关通用 Servlet API 过滤器 API 的信息: https://www.oracle.com/technetwork/java/filters-137243.html

如果您使用的是 Spring,还有另一种方法:

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#filters

https://www.baeldung.com/intercepting-filter-pattern-in-java

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 2019-10-21
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多