2012-03-14 9 views
6

क्या रीस्टेसी इंटरफ़ेस से HTTP त्रुटि वापस करना संभव है? मैं वर्तमान में इस के लिए श्रृंखलित वेब फिल्टर का उपयोग कर रहा है, लेकिन मैं अगर यह सीधे इंटरफ़ेस से संभव है जानना चाहता हूँ ...रीस्टेसी इंटरफ़ेस से वापसी HTTP त्रुटि

उदाहरण sudo-कोड:

@Path("/foo") 
public class FooBar { 

    @GET 
    @Path("/bar") 
    @Produces("application/json") 
    public Object testMethod(@HeaderParam("var_1") @DefaultValue("") String var1, 
          @HeaderParam("var_2") @DefaultValue("") String var2 { 

     if (var1.equals(var2)) { 
      return "All Good"; 
     } else { 
      return HTTP error 403; 
     } 
    } 
} 

उत्तर

18

मिले समाधान और यह बहुत सरल है:

throw new WebApplicationException(); 

तो:

@Path("/foo") 
public class FooBar { 

    @GET 
    @Path("/bar") 
    @Produces("application/json") 
    public Object testMethod(@HeaderParam("var_1") @DefaultValue("") String var1, 
          @HeaderParam("var_2") @DefaultValue("") String var2 { 

     if (var1.equals(var2)) { 
      return "All Good"; 
     } else { 
      throw new WebApplicationException(HttpURLConnection.HTTP_FORBIDDEN); 
     } 
    } 
} 
0

वापसी एक javax.ws.rs.core.Response प्रतिक्रिया कोड स्थापित करने के लिए: निम्न ब्लॉग अधिक जानकारी के, विशेष रूप से चरण # 2 है।

import javax.ws.rs.core.Response; 

@Path("/foo") 
public class FooBar { 

    @GET 
    @Path("/bar") 
    @Produces("application/json") 
    public Response testMethod(@HeaderParam("var_1") @DefaultValue("") String var1, 
          @HeaderParam("var_2") @DefaultValue("") String var2 { 

     if (var1.equals(var2)) { 
      return Response.ok("All Good").build(); 
     } else { 
      return Response.status(Response.Status.FORBIDDEN).entity("Sorry").build() 
     } 
    } 
} 

इससे आपको अपवाद से जुड़े स्टैकट्रैक को बचाया जाएगा।

संबंधित मुद्दे