Java接口多版本管理,用于API版本控制的多个Swagger endpoints

我正在使用以下技术:

Java 7

Tomcat7

JAX-RS(泽西2)

Swagger 2

Spring 季4.3.3.RELEASE

我的后端托管各种类型的版本化REST API . 我们有一个v1和v2 REST API上下文基本路径(/ api / v1和/ api / v2) . 我们托管这两个不同API版本的方式是通过两种不同的Jersey资源配置(两个不同的servlet) . 这个在一个Web应用程序中部署到我们的Web应用程序服务器(我们使用Tomcat7)作为WAR文件 .

我们做的基本例子:

@ApplicationPath("/api/v2")

@Configuration

public class RestApiV2JerseyConfig extends ResourceConfig {

public RestApiV2JerseyConfig() {

...

register(ApiListingResource.class);

register(SwaggerSerializers.class);

}

@Bean

public void swaggerV2Bean() {

BeanConfig beanConfig = new BeanConfig();

beanConfig.setBasePath("/api/v2/);

beanConfig.setResourcePackage("com.example.rest.v2");

beanConfig.setScan(true);

return beanConfig;

}

}

@ApplicationPath("/api/v1")

@Configuration

public class RestApiV1JerseyConfig extends ResourceConfig {

public RestApiV1JerseyConfig() {

...

register(ApiListingResource.class);

register(SwaggerSerializers.class);

}

@Bean

public void swaggerV1Bean() {

BeanConfig beanConfig = new BeanConfig();

beanConfig.setBasePath("/api/v1/);

beanConfig.setResourcePackage("com.example.rest.v1");

beanConfig.setScan(true);

return beanConfig;

}

}

每个REST API都在上面的各种配置中相应注册 .

现在,我希望能够做的是为每个servlet托管Swagger . 这是不可能的,对吗?当我尝试这样做时,Swagger配置会相互覆盖,每个 endpoints 都会返回相同的内容 . 含义https://ip-address/api/v1/swagger.json和https://ip-address/api/v2/swagger.json返回完全相同的响应(v1或v2 JSON,具体取决于首先注册的响应) .

因此,似乎正在发生的事情是 endpoints 可以为每个servlet成功托管,但托管内容不能是每个servlet的唯一内容 . 或者,我可能只是搞砸了一些小东西而且还没有注意到 .

各种东西的版本:

swagger-jersey2-jaxrs 1.5.2-M2

jersey 2.23.1

我在这里错过了什么?使用我提供的代码片段可以很容易地重现这一点 . 有没有其他人能够成功地做我想做的事情?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值