Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services @类级和方法级的路径配置_Web Services_Http_Rest_Jersey_Jax Rs - Fatal编程技术网

Web services @类级和方法级的路径配置

Web services @类级和方法级的路径配置,web-services,http,rest,jersey,jax-rs,Web Services,Http,Rest,Jersey,Jax Rs,我正在REST类中使用javax.ws.rs.Path类来配置路径。它的行为很奇怪。。。我的配置是这样的。。。这不是实际的文件,但我展示了一个复制,以使您了解我的配置 第一类 @Path("/v2") public class BoxResource { @POST @Path("/ie/box") public Response createbox(...) { ... } } 类别2 @Path("/v2/ie") public class

我正在REST类中使用
javax.ws.rs.Path
类来配置路径。它的行为很奇怪。。。我的配置是这样的。。。这不是实际的文件,但我展示了一个复制,以使您了解我的配置

第一类

@Path("/v2")
public class BoxResource {        
   @POST
   @Path("/ie/box")
   public Response createbox(...) {
     ...
   }
}
类别2

@Path("/v2/ie")
public class BagResource {        
    @POST
    @Path("/bag")
    public Response createbag(...) {
        ...
    }        
}
当我发出类似
/v2/ie/box
的HTTP请求时,它会抛出服务器配置错误。但是,如果我像下面这样改变我的第2类,它工作得很好

@Path("/v2/ie/bag")
public class BagResource {            
    @POST
    public Response createbag(...) {

    }
}

为什么是这样。。@path在类级别和方法级别的配置是否不同?

/v2/ie/box
的请求映射到
Class2
,因为它具有

@Path("/v2/ie")
作为类注释

在这种情况下,最长的
路径
获胜
Class1
从未被查看过,因为它具有较短的类注释
@Path(“/v2”)

由于
Class2
没有映射到剩余
/box
的方法,您将得到一个
404未找到

建议

  • 仅在方法上使用
    @Path
    注释:
    @Path(“/v2/ie/bag”)
    @Path(/v2/ie/box”)
  • 使用一个资源类,其类注释为
    @Path(“/v2/ie”)
    ,方法注释为
    @Path(“/bag”)
    @Path(“/box”)
  • 编辑


    另请参见。

    的“3.7将请求匹配到资源方法”一节。在对这两个类进行更改后,我对它们都进行了类级路径(“/v2”),即使这样也会引发相同的错误。请阅读我在回答中链接的规范。请在您的问题中添加您的真实代码。我不理解规范。。。在我的box类中还有其他方法,其路径类似于/v2/ow/。。所以不能制造一个资源。。也很抱歉,可能会添加真实代码。。如果您需要信息,我可以提供您推荐的选项2,但在我的方案中不可能。。选项1不起作用。。它仍然抛出配置错误