gpt4 book ai didi

java - RestEasy 可以扩展 @Path 吗?

转载 作者:行者123 更新时间:2023-12-01 10:17:46 25 4
gpt4 key购买 nike

@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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com