有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

查找rest服务中存在或不存在于Java中的方法

大家好,我是Java中Rest服务的新手。首先我想解释我的问题,然后在最后我会问问题。 我正在使用Mozilla rest客户端。我的休息课看起来像:

@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

问题: 现在,在我的rest服务类中,我想添加一个代码补丁,用于检测该服务中是否存在任何已被调用的v1、v2或v3函数

我能做这个吗?还是用其他方法

谢谢


共 (2) 个答案

  1. # 1 楼答案

    对您来说,最好的方法是添加一个后备响应。当有人试图访问任何不存在的WS方法时,将调用它

        @RequestMapping(value = {"*"})
        public String getFallback()
        {
            return "This is a fallback response!";
        }
    
  2. # 2 楼答案

    你可以添加一个通配符:

    @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.");
    }
    

    通过这种方式,您还可以在客户端检测出错误