java – Jersey:获取方法的URL

我希望获得特定方法的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());
    }
}
上一篇:java – 无法在Jersey中进行基本的http身份验证


下一篇:java – 使用UriBuilder在构建器URI中保留一些{template}