Java JAX-RS 2.0/RESTeasy中的版本API

Java JAX-RS 2.0/RESTeasy中的版本API,java,rest,jakarta-ee,resteasy,Java,Rest,Jakarta Ee,Resteasy,我们想对RESTAPI进行版本设置。该版本适用于整个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.b

我们想对RESTAPI进行版本设置。该版本适用于整个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版本头中传递

我的问题是:如果X版本头为1,是否可以激活MyApiApplicationV1;如果X版本头为2,是否可以激活MyApiApplicationV2?怎么做

我们使用的是JAX RS 2/RESTeasy 3


感谢

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

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


无关:这里介绍RESTful API的版本控制是否有意义(从00:26开始)。

谢谢。是的,现在我们正在使用applicationpath/rest/1、/rest/2等。映射是在企业服务网关中完成的。我刚刚想到在RESTeasy中有一个映射可能性,可以在没有ESG的情况下进行本地测试。因此,我将采用servlet/重定向方法。