在休息服务中查找方法或不在Java中查找方法

时间:2014-09-05 13:52:53

标签: java rest

您好我是Java中的Rest Service新手。首先,我想解释我的问题,然后最后我会问问题。 我正在使用Mozilla rest CLIENT。我的休息班看起来像:

@Path("/api1")
public class RestService {
    @POST
    @Path("/v1")
    @Consumes("application/json")
    @Produces("application/json")
    public String v1(String json){
     //Some code here
} 

   @POST
    @Path("/v2")
    @Consumes("application/json")
    @Produces("application/json")
    public String v2(String json){
     //Some code here
} 

}

现在在这段代码中我有两个功能。 要访问v1,请致电:

http://localhost:8080/project_name/package/api1/v1

要访问v2,呼叫将是:

http://localhost:8080/project_name/package/api1/v2

问题: 现在在我的休息服务类中,我想添加一段代码,用于检测此服务中是否存在任何被称为v1,v2或v3的函数?

我可以这样做吗?或者其他任何方式来做到这一点?

由于

2 个答案:

答案 0 :(得分:1)

最适合您的方法是添加回退响应。当有人试图访问任何不存在的WS方法时,将调用它。

    @RequestMapping(value = {"*"})
    public String getFallback()
    {
        return "This is a fallback response!";
    }

答案 1 :(得分:1)

好吧,你可以添加一个通配符响应:

@POST
@Path("/{what}")
@Consumes("application/json")
@Produces("application/json")
public String v2(String json, @PathParameter("what") String what){
   return "The path "+what+" does not exist.";
}

但是,由于用户永远不会看到直接回复,您可以使用自定义的404回答:

@POST
@Path("/{what}")
@Consumes("application/json")
@Produces("application/json")
public Response v2(String json, @PathParameter("what") String what){
   return Response.status(Status.NOT_FOUND).entity("The path "+what+" does not exist.");
}

通过这种方式,您还可以在客户端检测到某些内容不正确。