【问题标题】:Version API in JAX-RS 2.0 / RESTeasyJAX-RS 2.0 / RESTeasy 中的版本 API
【发布时间】:2015-03-12 10:50:54
【问题描述】:

我们想要对我们的 REST API 进行版本控制。该版本适用于整个 API,而不适用于单个资源。

我想为每个 API 版本都有一个 javax.ws.rs.core.Application,然后引用它公开的资源。

- com.foo.bar.rest.v1
  - MyApiApplicationV1
    - MyResourceOne (Path: /api/one; X-VERSION: 1)
    - MyResourceTwo (Path: /api/two; X-VERSION: 1)
- com.foo.bar.rest.v2
    - MyApiApplicationV2
      - MyResourceOne (Path: /api/one; X-VERSION: 2)
      - MyResourceThree (Path: /api/three; X-VERSION: 2)

API 的版本在 X-Version 标头中传递。

我的问题是:如果 X-VERSION 标头为 1,是否可以激活 MyApiApplicationV1,如果 X-Version 标头为 2,是否可以激活 MyApiApplicationV2?怎么做?

我们正在使用 JAX RS 2 / RESTeasy 3

谢谢

【问题讨论】:

    标签: java rest jakarta-ee resteasy


    【解决方案1】:

    JAX-RS 应用程序通常通过 web.xml 配置或使用 @ApplicationPath 映射到路径。如果路径标识了您的应用程序,则您不能在同一路径上运行两个应用程序。

    要解决此问题,您可以添加第三个应用程序或简单的 servlet,根据您的版本标头重定向到适当的版本。

    无关:下面是a good talk,关于 RESTful API 的版本控制是否以及何时有意义(从 00:26 开始)。

    【讨论】:

    • 谢谢。是的,现在我们正在使用 ApplicationPaths /rest/1、/rest/2 等。映射是在企业服务网关中完成的。我只是想在没有 ESG 的情况下在 RESTeasy 中进行本地测试的映射可能性。所以我会选择 servlet/redirect 方法。
    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 2016-07-23
    • 2011-01-05
    • 1970-01-01
    • 2020-09-08
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多