javarest如何生成一个整体get过滤器
我正在使用jersey 2和servlet 3编写REST服务。我有定制的GET方法,所有这些方法都首先查看请求是否有特定的头。如果标题不存在,我将抛出一个异常。有没有一种方法可以提供一个“类似父级”的@GET方法,该方法可以在没有特定头的请求进入相应的@Path链接之前拒绝它们?比如,如果我的服务有一个名称myService,并且@Path是“getHello”,那么在转到myService/getHello注释方法之前,如何首先检查头 您可以使用javarest如何生成一个整体get过滤器,java,rest,Java,Rest,我正在使用jersey 2和servlet 3编写REST服务。我有定制的GET方法,所有这些方法都首先查看请求是否有特定的头。如果标题不存在,我将抛出一个异常。有没有一种方法可以提供一个“类似父级”的@GET方法,该方法可以在没有特定头的请求进入相应的@Path链接之前拒绝它们?比如,如果我的服务有一个名称myService,并且@Path是“getHello”,那么在转到myService/getHello注释方法之前,如何首先检查头 您可以使用ContainerRequestFilter并
ContainerRequestFilter
并检查该方法
@Provider
public class CheckHeaderFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext context) {
if (context.getMethod().toUpperCase().equals("GET")) {
String header = context.getHeaderString("SomeHeader");
MultivaluedMap<String, String> headers = context.getHeaders();
if(notValidHEaders) {
context.abortWith(Response.status(400).entity("Bad").build());
// or throw WebApplicationException
}
}
}
}
@Provider
公共类CheckHeaderFilter实现ContainerRequestFilter{
@凌驾
公共无效筛选器(ContainerRequestContext上下文){
if(context.getMethod().toUpperCase().equals(“GET”)){
字符串头=context.getHeaderString(“SomeHeader”);
多值Map headers=context.getHeaders();
if(非有效领导){
abortWith(Response.status(400.entity(“Bad”).build());
//或抛出WebApplicationException
}
}
}
}
如果您正在使用包扫描来注册资源,那么由于@Provider
注释的缘故,也应该选择并注册筛选器。否则,您需要自己注册
另请参见: