【问题标题】:How to set globally my JEE REST client headers?如何全局设置我的 JEE REST 客户端标头?
【发布时间】:2019-05-14 06:59:22
【问题描述】:

有没有办法全局设置我的 REST 标头? 我尝试结合一些 JAX-RS 技巧但没有效果。

我所有的 REST 服务都有这些注释:

@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")

@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")

最后我想要的只是用标题结束:

Accept:[application/json]
Content-Type:[application/json;charset=utf-8]

...不涉及 REST 类,仅通过配置。 有没有简单的方法来实现这一点?

【问题讨论】:

    标签: java jakarta-ee http-headers jax-rs


    【解决方案1】:

    是的,您可以轻松做到这一点。创建一个 BaseResource 类并将其扩展至您为 Endpoint 创建类的任何位置。

    public abstract BaseResource {
        @HeaderParam("username")
        private String username;
    
        @HeaderParam("user-ip")
        private String userIp;
        public String getUserAccount () {
            return userAccount;
        }
    
        public final String getUserIP() {
            return userIp;
        }
    }
    

    使用这些方法,您可以轻松访问标头值。

    【讨论】:

    • 感谢您的回答,但实际上我无法触摸 REST 服务中的代码,现在我正在搜索 ContainerRequestFilter
    • 哦,我不需要这些标头,我需要在发送请求之前对其进行编辑。
    【解决方案2】:

    好的,没有外界的帮助,所以我做到了:)

    我使用javax.servlet.http 中的HttpServletResponseWrapper 来设置标题。

    我还使用了javax.servlet 中的FilterChain,以确保不要让任何人认为其他敲门:)

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 2023-03-10
      • 2020-11-20
      • 2018-02-25
      • 2016-09-14
      相关资源
      最近更新 更多