gpt4 book ai didi

java - 使用拦截器设置响应头?

转载 作者:行者123 更新时间:2023-12-01 22:17:27 24 4
gpt4 key购买 nike

我正在编写 jax-rs 端点。对于某些端点集(现有代码),我想设置一个额外的响应 header ,该 header 实际上是在 @AroundInvoke 拦截器中生成的,并设置为 HttpServletRequest 属性。在 @AroundInvoke 中,我可以使用 @Inject 访问 HttpServletRequest。但似乎我无法在同一个拦截器本身中访问 HttpServletResponse。

看来我可以使用 PostProcessorInterceptor,但我再次对以下文档感到困惑。

The org.jboss.resteasy.spi.interception.PostProcessInterceptor runs after the JAX-RS method was invoked but before MessageBodyWriters are invoked. They can only be used on the server side. Use them if you need to set a response header when there might not be any MessageBodyWriter invoked.

我正在使用resteasy, jackson 。如果我使用 PostProcessorInterceptor 可以注入(inject) HttpServletResponse 吗?或者我可以如何设置新的 http header 吗?

任何代码示例/方向将不胜感激。

最佳答案

通过 JaxRS 2(随 javaEE 7 一起提供),您可以使用 ContainerResponseFilter see also

public class PoweredByResponseFilter implements ContainerResponseFilter {

@Inject
HttpServletRequest request;

@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
String name = "X-My-Header";
String value = "";// some data from request
responseContext.getHeaders().add(name, value);
}
}

关于java - 使用拦截器设置响应头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30723981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com