我经历了关于api版本化url rewrite的所有讨论。我们决定将版本号放在URI中,为此我们现在必须支持,客户端在uri中请求没有api版本的资源,默认情况下为最新版本。例如:
http://base_uri/api/customers/1234 (with out api version)
http://base_uri/api/v3.0/customers/1234 (default to current version)
第1步:要解决上述问题:我正在考虑使用(jboss valve,{{3}})重写网址,请告知是否有更好的方法。
步骤2:现在我需要使用我的版本号“v1”预先挂起所有@Path注释。
@Path("/foo/bar") will now change to @Path("v1/foo/bar").
我在考虑用占位符代替版本
ex: @Path("{version}/foo/bar")
并从配置文件中读取版本名称,而rest-easy正在扫描资源并进行注册。因此,如果我们将来迁移到新版本,我们所需要的只是在一个地方进行更改。
我正在寻找step1&amp ;;中的最佳方法第2步。非常感谢任何帮助。
我正在使用Rest-easy,jax-rs 2.0,jboss
答案 0 :(得分:0)
我建议第2步,因为对于此要求,URL重写可能有点复杂。它还增加了一个维护组件。 对于步骤2,您需要注意注释仅使用常量,因为它们在编译时进行评估。因此,声明一个常量并在@Path注释中重用它。
public static final String VERSION_1 =“1.0”; //在Constants类中。
然后在所有路径映射或任何注释中使用它。
@Path(“/”+ Constants.VERSION_1 +“/ foo / bar”)