我希望获得特定方法的URI,而不需要“硬编码”它.
我尝试过UriBuilder.fromMethod但它只生成在该方法的@Path注释中指定的URI,它没有考虑它所在的资源类的@Path.
例如,这是班级
@Path("/v0/app")
public class AppController {
@Path("/{app-id}")
public String getApp(@PathParam("app-id") int appid) {
// ...
}
}
我想获取getApp方法的URL,例如/ v0 / app / 100.
更新:
我想从getApp以外的方法获取URL
解决方法:
如果您使用UriBuilder.fromResource,然后使用path添加方法路径(Class resource,String method)
URI uri = UriBuilder
.fromResource(AppController.class)
.path(AppController.class, "getApp")
.resolveTemplate("app-id", 1)
.build();
不知道为什么它不能与fromMethod一起使用.
这是一个测试用例
public class UriBuilderTest {
@Path("/v0/app")
public static class AppController {
@Path("/{app-id}")
public String getApp(@PathParam("app-id") int appid) {
return null;
}
}
@Test
public void testit() {
URI uri = UriBuilder
.fromResource(AppController.class)
.path(AppController.class, "getApp")
.resolveTemplate("app-id", 1)
.build();
assertEquals("/v0/app/1", uri.toASCIIString());
}
}