JAXRS CXF - 获取 http headers 而不指定为方法参数
JAXRS CXF - get http headers without specifying as method parameters
是否可以在 JAXRS 资源方法中检索 http headers 而无需明确指定这些 headers 作为方法参数?
例如我有如下界面:
@Path("/posts")
public interface PostsResource {
@GET
public List<Post> getAllPosts();
}
和以下实现此接口的class:
public class PostsResourceImpl implements PostsResource {
@Autowired
private PostsService postsService;
public List<Post> getAllPosts() {
return postsService.getAllPosts();
}
}
我不想将我的方法签名更改为:
public List<Post> getAllPosts(@HeaderParam("X-MyCustomHeader") String myCustomHeader);
此 header 将由客户端的拦截器添加,因此客户端代码不知道将什么放在这里,这不应该是显式方法参数。
您可以在资源中注入 HttpHeaders
类型的 object 作为 class 变量来访问请求 headers,如下所述:
@Path("/test")
public class TestService {
@Context
private HttpHeaders headers;
@GET
@Path("/{pathParameter}")
public Response testMethod() {
(...)
List<String> customHeaderValues = headers.getRequestHeader("X-MyCustomHeader");
System.out.println(">> X-MyCustomHeader = " + customHeaderValues);
(...)
String response = (...)
return Response.status(200).entity(response).build();
}
}
希望它能回答您的问题。
蒂埃里
是否可以在 JAXRS 资源方法中检索 http headers 而无需明确指定这些 headers 作为方法参数?
例如我有如下界面:
@Path("/posts")
public interface PostsResource {
@GET
public List<Post> getAllPosts();
}
和以下实现此接口的class:
public class PostsResourceImpl implements PostsResource {
@Autowired
private PostsService postsService;
public List<Post> getAllPosts() {
return postsService.getAllPosts();
}
}
我不想将我的方法签名更改为:
public List<Post> getAllPosts(@HeaderParam("X-MyCustomHeader") String myCustomHeader);
此 header 将由客户端的拦截器添加,因此客户端代码不知道将什么放在这里,这不应该是显式方法参数。
您可以在资源中注入 HttpHeaders
类型的 object 作为 class 变量来访问请求 headers,如下所述:
@Path("/test")
public class TestService {
@Context
private HttpHeaders headers;
@GET
@Path("/{pathParameter}")
public Response testMethod() {
(...)
List<String> customHeaderValues = headers.getRequestHeader("X-MyCustomHeader");
System.out.println(">> X-MyCustomHeader = " + customHeaderValues);
(...)
String response = (...)
return Response.status(200).entity(response).build();
}
}
希望它能回答您的问题。 蒂埃里