Jersey 开发RESTful(十四) Jersey的过滤器

匿名 (未验证) 提交于 2019-12-03 00:34:01
public class MyRequestTestFilter implements ContainerRequestFilter {      @Override     public void filter(ContainerRequestContext requestContext) throws IOException {         System.out.println("===my request test filter===");     }  } 
public class MyResponseTestFilter implements ContainerResponseFilter {      @Override     public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)             throws IOException {         System.out.println("===my response filter test===");     }  } 
@Path("filter1") @GET public String resource1() {     return "success"; } 
public RestApplication() {     this.packages("cn.wolfcode.jersey");     this.register(MultiPartFeature.class);     this.register(MyRequestTestFilter.class).register(MyResponseTestFilter.class); } 
@Test public void test() {     String responseText = ClientBuilder.newClient()             .target("http://localhost:8082/webapi").path("filter/filter1")             .request(MediaType.TEXT_PLAIN).get(String.class);     System.out.println(responseText); } 
===my request test filter=== ===my response filter test=== 
@Test public void test() {     String responseText = ClientBuilder.newClient()             .target("http://localhost:8082/webapi").path("filter/filter2")             .request(MediaType.TEXT_PLAIN).get(String.class);     System.out.println(responseText); } 
===my response filter test=== 
ContainerRequestContext
public final class HttpMethodOverrideFilter implements ContainerRequestFilter {  @Override public void filter(final ContainerRequestContext request) {     if (!request.getMethod().equalsIgnoreCase("POST")) {         return;     }      final String header = getParamValue(Source.HEADER, request.getHeaders(), "X-HTTP-Method-Override");     final String query = getParamValue(Source.QUERY, request.getUriInfo().getQueryParameters(), "_method");      final String override;     if (header == null) {         override = query;     } else {         override = header;         if (query != null && !query.equals(header)) {             // inconsistent query and header param values             throw new BadRequestException();         }     }      if (override != null) {         request.setMethod(override);         if (override.equals("GET")) {             if (request.getMediaType() != null                     && MediaType.APPLICATION_FORM_URLENCODED_TYPE.getType().equals(request.getMediaType().getType())) {                 final UriBuilder ub = request.getUriInfo().getRequestUriBuilder();                 final Form f = ((ContainerRequest) request).readEntity(Form.class);                 for (final Map.Entry<String, List<String>> param : f.asMap().entrySet()) {                     ub.queryParam(param.getKey(), param.getValue().toArray());                 }                 request.setRequestUri(request.getUriInfo().getBaseUri(), ub.build());             }         }     } } } 
ContainerResponseContext
public class PoweredByResponseFilter implements ContainerResponseFilter {      @Override     public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)         throws IOException {             responseContext.getHeaders().add("X-Powered-By", "wolfcode.cn");     } } 
    @PreMatching     @Priority(Priorities.HEADER_DECORATOR + 50)      public final class HttpMethodOverrideFilter implements ContainerRequestFilter { 
public class CheckRequestFilter implements ClientRequestFilter {      @Override     public void filter(ClientRequestContext requestContext)                         throws IOException {         if (requestContext.getHeaders(                         ).get("Client-Name") == null) {             requestContext.abortWith(                         Response.status(Response.Status.BAD_REQUEST)                 .entity("Client-Name header must be defined.")                         .build());          }     } } 
@Test public void testClientFilter() {     String responseText = ClientBuilder.newClient()             .register(CheckRequestFilter.class)             .target("http://localhost:8082/webapi").path("filter/filter1")             .request(MediaType.TEXT_PLAIN)             .header("Client-Name", "wolfcode.cn").get(String.class);     System.out.println(responseText); } 
@Test public void testClientFilter() {     String responseText = ClientBuilder.newClient()             .register(CheckRequestFilter.class)             .target("http://localhost:8082/webapi").path("filter/filter1")             .request(MediaType.TEXT_PLAIN)             .get(String.class);     System.out.println(responseText); } 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!