Link 相当于球衣的@InjectLink
Link equivalent to @InjectLink of jersey
我正在尝试使用(标准)Link 方法为不同的 resources/methods 构建动态表示。
对我来说工作得很好的@InjectLink注解是
public class InjectLinkTest {
@InjectLink(resource = GraphResource.class, method = "getDataInterval", bindings = { @Binding(name = "dataid", value = "${instance.id}"), @Binding(name = "interval", value = "day") }, condition = "${instance.id != null}")
public URI day;
// ...
}
这按预期构建了资源和方法的相对 link:/myresource/graphs/3/day
现在我想用更标准的方法使用 Jax-RS 的默认 Link
:
public class StandardLinkTest {
public URI day = Link.fromMethod(GraphResource.class, "getDataInterval").build(this.id, "day").getUri();
// ...
}
我尝试了不同的选项(手动设置应用程序的基本 URI 等),但出于某种原因,它从来没有 returns 对我来说是正确的 URI。我得到的只是 3/day
或 http://localhost:8080/3/day
这不是资源和方法表示的完整(全局)路径,而是 从构建 link 的地方看到的路径在 ,即我正在尝试获取 /myresource/graphs
returns 实体内部的路径。在不使用硬编码路径部分的情况下,如何使用标准 Jax-RS link 构建器获得 @InjectLink
注释的等效路径?
作为参考,目标资源的正确完整路径为 http://localhost:8080/myresource/graphs/3/day
.
预期行为:"Note that the link URI passed to the Link.Builder instance returned by this method is relative." (http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Link.html)
一种可能性是将 UriBuilder 与 / 作为 basePath。
UriBuilder.fromPath("/").path(GraphResource.class, "getDataInterval").build(this.id, "day").getUri();
注意:如果您对编译时安全 link 创建感兴趣,请参阅此处:https://github.com/upsource/jersey-linking/
用法 (Java-8):
@Inject
private Linker linker;
...
linker.link(GraphResource.class, (o) -> o.getDataInterval(this.id, "day"));
我正在尝试使用(标准)Link 方法为不同的 resources/methods 构建动态表示。 对我来说工作得很好的@InjectLink注解是
public class InjectLinkTest {
@InjectLink(resource = GraphResource.class, method = "getDataInterval", bindings = { @Binding(name = "dataid", value = "${instance.id}"), @Binding(name = "interval", value = "day") }, condition = "${instance.id != null}")
public URI day;
// ...
}
这按预期构建了资源和方法的相对 link:/myresource/graphs/3/day
现在我想用更标准的方法使用 Jax-RS 的默认 Link
:
public class StandardLinkTest {
public URI day = Link.fromMethod(GraphResource.class, "getDataInterval").build(this.id, "day").getUri();
// ...
}
我尝试了不同的选项(手动设置应用程序的基本 URI 等),但出于某种原因,它从来没有 returns 对我来说是正确的 URI。我得到的只是 3/day
或 http://localhost:8080/3/day
这不是资源和方法表示的完整(全局)路径,而是 从构建 link 的地方看到的路径在 ,即我正在尝试获取 /myresource/graphs
returns 实体内部的路径。在不使用硬编码路径部分的情况下,如何使用标准 Jax-RS link 构建器获得 @InjectLink
注释的等效路径?
作为参考,目标资源的正确完整路径为 http://localhost:8080/myresource/graphs/3/day
.
预期行为:"Note that the link URI passed to the Link.Builder instance returned by this method is relative." (http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Link.html)
一种可能性是将 UriBuilder 与 / 作为 basePath。
UriBuilder.fromPath("/").path(GraphResource.class, "getDataInterval").build(this.id, "day").getUri();
注意:如果您对编译时安全 link 创建感兴趣,请参阅此处:https://github.com/upsource/jersey-linking/ 用法 (Java-8):
@Inject
private Linker linker;
...
linker.link(GraphResource.class, (o) -> o.getDataInterval(this.id, "day"));