2012-03-14 65 views
6

是否有可能從RESTeasy界面返回HTTP錯誤?我目前使用的鏈接網頁過濾器,但我想知道是否有可能直接從界面...從RESTeasy界面返回HTTP錯誤

例須藤代碼:

@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設置響應代碼。

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() 
     } 
    } 
} 

這將爲您節省與異常相關的堆棧跟蹤。