Java 我们可以有一个空的基本路径吗?

Java 我们可以有一个空的基本路径吗?,java,rest,jersey,jax-rs,Java,Rest,Jersey,Jax Rs,我们可以为@Path注释设置一个空的basepath吗? 即@Path(“/”) 我想提供RESTAPI 当我这样做时,抛出异常 javax.ws.rs.WebApplicationException 位于com.sun.jersey.server.impl.uri.rules.TerminatingRule.accept(TerminatingRule.java:66) 位于com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accep

我们可以为@Path注释设置一个空的basepath吗? 即@Path(“/”)

我想提供RESTAPI

当我这样做时,抛出异常

javax.ws.rs.WebApplicationException 位于com.sun.jersey.server.impl.uri.rules.TerminatingRule.accept(TerminatingRule.java:66) 位于com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 位于com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)

更新-我在GuiceServletContextListener中绑定,如下所示

bind(yoursource.class).in(Singleton.class)

与(GuiceContainer.class)一起提供(“/abc”)

从类中完全删除
@Path(“/”
注释

将前缀斜杠(/)插入方法级路径注释,如
@path(“/abc”)

请验证您的URI是否映射到java方法,如下所示

在启动服务器时,您可以看到URI是如何映射到java方法的,类似于eclipse控制台中的内容

将“{[/static/transit],methods=[],params=[],headers=[],consumes=[],products=[],custom=[])映射到public java.util.List com.xx.yy.zz.controller.abCDATA controller.getAllTransit()上。

==================================================================

更新:

根据下面的java文档,这两个示例之间没有差异,两者都可以工作。 您可以将前导斜杠与两个URI一起使用,或者不将任何前导斜杠与两个URI一起使用,两者都是相同的。

路径是相对的。对于带注释的类,基URI是 应用程序路径,请参阅ApplicationPath。对于带注释的方法 基本URI是包含类的有效URI。对于 针对基本URI(前导“/”URI)绝对化路径的目的 在路径中,被忽略,基本URI被视为以 “/”

@Path("/message")
public class MessageServices {

    @PUT
    @Path("/sendsms")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces({MediaType.APPLICATION_JSON})
    public Response sendSms() {
        //....
    }

}
从类中完全删除
@Path(“/”
注释

将前缀斜杠(/)插入方法级路径注释,如
@path(“/abc”)

请验证您的URI是否映射到java方法,如下所示

在启动服务器时,您可以看到URI是如何映射到java方法的,类似于eclipse控制台中的内容

将“{[/static/transit],methods=[],params=[],headers=[],consumes=[],products=[],custom=[])映射到public java.util.List com.xx.yy.zz.controller.abCDATA controller.getAllTransit()上。

==================================================================

更新:

根据下面的java文档,这两个示例之间没有差异,两者都可以工作。 您可以将前导斜杠与两个URI一起使用,或者不将任何前导斜杠与两个URI一起使用,两者都是相同的。

路径是相对的。对于带注释的类,基URI是 应用程序路径,请参阅ApplicationPath。对于带注释的方法 基本URI是包含类的有效URI。对于 针对基本URI(前导“/”URI)绝对化路径的目的 在路径中,被忽略,基本URI被视为以 “/”

@Path("/message")
public class MessageServices {

    @PUT
    @Path("/sendsms")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces({MediaType.APPLICATION_JSON})
    public Response sendSms() {
        //....
    }

}
将斜杠添加到路径(“/”),如下所示:

@Path("/")
public class YourResource {
  ...
}
将斜杠添加到路径(“/”),如下所示:

@Path("/")
public class YourResource {
  ...
}

当然将基本路径留空,您将得到您想要的。我尝试了@path(“”),当然仍然得到相同的错误。将基本路径保留为完全空,您将得到您想要的。我尝试了@path(“”),但仍然得到了与我尝试的相同的错误。我得到这个例外。com.sun.jersey.api.NotFoundException:null表示uri:“您可以在类级别尝试像@Path(“/test”),在方法级别尝试像@Path(“/abc”)一样吗?使用uri:localhost:8080/test/abcIt如果没有看到您当前的代码,很难提出建议,请参考本教程更新我的答案,接受/更新此答案,如果它有助于参考文章-Jersey和Guice:编写RESTful API的完美组合;我试过了。我得到这个例外。com.sun.jersey.api.NotFoundException:null表示uri:“您可以在类级别尝试像@Path(“/test”),在方法级别尝试像@Path(“/abc”)一样吗?使用uri:localhost:8080/test/abcIt如果没有看到您当前的代码,很难提出建议,请参考本教程更新我的答案,接受/更新此答案,如果它有助于参考文章-Jersey和Guice:编写RESTful API的完美组合;不工作。。。javax.ws.rs.NotFoundException:HTTP 404未找到未工作。。。javax.ws.rs.NotFoundException:未找到HTTP 404