JAX-RS 客户端过滤器修改 Header 在请求被发送到服务器之前
JAX-RS Client Filter to Modify Header Before Request is Dispatched to server
在 JAX-RS (RestEasy) 中,我想实现一个在发送请求之前修改 header 的客户端过滤器,这样我就不会在每次调用时都手动执行此操作。
目前我正在接收端执行此操作以在到达资源之前拦截请求。
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
// read header
}
现在我知道了(如果我错了请纠正我):
在接收端,可以在请求到达资源之前使用ContainerRequestFilter
获取请求。
但是我想在客户端实现这个,在请求发送到服务器之前修改 header。是否可以使用相同的服务器过滤器或客户端类似的东西?
您必须注册一个ClientRequestFilter into your Client
Client client = ClientBuilder.newClient().register(MyFilter.class);
@Provider
public class MyFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext ctx) throws IOException {
// modify header before send: ctx.getHeaders()
}
}
在 JAX-RS (RestEasy) 中,我想实现一个在发送请求之前修改 header 的客户端过滤器,这样我就不会在每次调用时都手动执行此操作。
目前我正在接收端执行此操作以在到达资源之前拦截请求。
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
// read header
}
现在我知道了(如果我错了请纠正我):
在接收端,可以在请求到达资源之前使用ContainerRequestFilter
获取请求。
但是我想在客户端实现这个,在请求发送到服务器之前修改 header。是否可以使用相同的服务器过滤器或客户端类似的东西?
您必须注册一个ClientRequestFilter into your Client
Client client = ClientBuilder.newClient().register(MyFilter.class);
@Provider
public class MyFilter implements ClientRequestFilter {
@Override
public void filter(ClientRequestContext ctx) throws IOException {
// modify header before send: ctx.getHeaders()
}
}