java - RestEasy 可以扩展 @Path 吗?

标签 java rest path resteasy

@Path("a")
public class A {}

@Path("b")
public class B extends A {
    @GET
    getList(){}
}

我想要一个路径为 GET localhost/rest/v1/a/b

有办法做到这一点吗?简单的扩展并不能解决问题

最佳答案

注释可以继承,但它们不能扩展或连接或类似的东西。这么说吧 - B 上的 @Path 完全删除了 A 上的 @Path。 (如果没有 B@Path,它将从 A 继承 @Path,可能会导致部署冲突,但这既不存在也不存在。)

我突然想到有两种方法可以做到这一点。当然,第一个简单地涉及到这样做:

@Path("a/b")
public class B ...

第二个涉及子资源(the JAX-RS 2.0 spec的第3.4.1节)...

@Path("a")
public class A {

    @Path("b")
    public B getB() {
       return new B();
    }
}

public class B {
    // blah blah blah
}

这里我想强调两件事:

  1. B 没有自己的 @Path。它是一个子资源,只能通过 A 才能直接访问。 B 的总路径是子资源定位器上应用程序路径、A 的路径和 B 的路径的串联 (getB()) >),带有适当的/s。

  2. B 不继承自 A。如果确实如此,正如我上面所说,它将继承 A 的 @Path。这可能会产生冲突,或导致 A 被忽略,而选择更具体的子类型 B。 (有关注释继承的详细信息,请参阅规范的第 3.6 节,有关如何为给定请求选择匹配的类/方法的具体信息,请参阅第 3.7 节。)

关于java - RestEasy 可以扩展 @Path 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798368/

相关文章:

java - SQLite异常路径不存在

node.js - 如何使用curl 在我的本地主机 Node 服务器上执行GET?

svn - 是否有一个命令可以在命令行中的 repo-browser 中打印文件的路径?

c++ - 长格式和多格式路径操作库?

java - Excel POI : "We found a problem with some content in ... " when the Excel has less than 135 Rows

java - 使用 Project Reactor 并行调用其余 Web 服务?

java - 在线提交时Java代码错误"NZEC"

javascript - 在hdp 2.3.4.7-4中,使用REST API提交作业时出现两个应用程序

Eclipse 找不到 Jersey 导入

javascript - 表达 res.redirect 导致 "Uncaught SyntaxError: Unexpected token <"