您好我是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的函数?
我可以这样做吗?或者其他任何方式来做到这一点?
由于
答案 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.");
}
通过这种方式,您还可以在客户端检测到某些内容不正确。