2012-03-14 23 views
6

Bir RESTeasy arabiriminden HTTP hatası döndürmek mümkün mü? ... Şu anda bunun için zincirleme web filtreleri kullanıyorum ama düz arayüzünden mümkün olup olmadığını bilmek istiyorumRESTeasy arabiriminden HTTP hatası döndürün

Örnek sudo-kod:

@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; 
     } 
    } 
} 

cevap

18

çözüm bulundu ve çok basit:

throw new WebApplicationException(); 

Yani: Ayrıca yöntem ve th içinde java istisnalar atabilir

@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

geri javax.ws.rs.core.Response yanıt kodu ayarlamak için: Aşağıdaki blog daha fazla ayrıntı, özellikle aşama 2. sahiptir.

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

Bu, size bir istisna ile ilişkili stacktrace'i kaydedecektir.

İlgili konular