Spring boot 如何在springboot中使用swagger json处理API版本的AWS API网关

Spring boot 如何在springboot中使用swagger json处理API版本的AWS API网关,spring-boot,swagger,aws-api-gateway,Spring Boot,Swagger,Aws Api Gateway,我们有CICD使用云形成脚本,我们构建infra并部署API。 Jenkins文件脚本: 第1步:我们的招摇过市将创建招摇过市文档。这将存储在S3存储桶中 sh "curl https://{host-name}/v2/api-docs?group=school-api-v1.0 -o ${WORKSPACE}/devl-schoolapi-doc.json" 步骤2:sh“aws apigateway放置rest api--rest api id${env.api_id}

我们有CICD使用云形成脚本,我们构建infra并部署API。 Jenkins文件脚本:

第1步:我们的招摇过市将创建招摇过市文档。这将存储在S3存储桶中

sh "curl https://{host-name}/v2/api-docs?group=school-api-v1.0 -o ${WORKSPACE}/devl-schoolapi-doc.json"
步骤2:
sh“aws apigateway放置rest api--rest api id${env.api_id}--模式覆盖--body'文件://${WORKSPACE}/devl schoolapi doc.json'--区域us-east-1”

步骤3:
sh“aws api网关创建部署--rest api id${env.api_id}--阶段名称${env.ENVIRONMENT}--区域us-east-1”}

这将构建在AWS环境网关上,资源为v1/endpoint。

现在,我想在这个网关中为以下方法维护两个API版本

1./student
2./v1/student
在我的api中,两个招摇过市的json正在生成。因为这是次要版本,所以应该有相同的端点

1.https://{host-name}/v2/api-docs?group=school-api-v1.0
2.https://{host-name}/v2/api-docs?group=school-api-v1.1
目前,在我的脚本中,它只显示网关中的v1.0版本

公共类SwaggerConfig实现了OperationBuilderPlugin{
@自动连线
环境环境;
@豆子
公共卷宗{
返回新的摘要(DocumentationType.SWAGGER_2).groupName(“rest-api-v1.0”)
.选择()
.path(路径())
.api(RequestHandlerSelectors.any()).build()
.操作订购(新订购(){
@凌驾
公共整数比较(操作左、操作右){
返回left.getMethod().name().compareTo(right.getMethod().name());
}
})
.apinfo(apidentpointsinfo());
}
私有apinfo-apidentpointsinfo(){
返回新的ApiInfoBuilder().title(env.getProperty(“env”)+env.getProperty(“appname”))
.description(环境获取属性(“描述”)).contact(新联系人)(环境获取属性(“联系人名称”),
env.getProperty(“联系url”)、env.getProperty(“联系电子邮件”))
.version(env.getProperty(“version”)).build();
}
@豆子
公开摘要摘要摘要2(){
ParameterBuilder APParameterBuilder=新的ParameterBuilder();
apaParameterBuilder.name(“Accept”).modelRef(new modelRef(“string”)).parameterType(“header”).defaultValue(“application/v1.1+json”).required(true).build();
List operationParameters=new ArrayList();
operationParameters.add(apaParameterBuilder.build());
返回新摘要(DocumentationType.SWAGGER_2)
.groupName(“rest-api-v1.1”)
.select().api(RequestHandlerSelectors.basePackage(env.getProperty(“basePackage”))
.path(后路径())
.path(谓词.not(PathSelectors.regex(“/error.*))
.build()
.操作订购(新订购(){
@凌驾
公共整数比较(操作左、操作右){
返回left.getMethod().name().compareTo(right.getMethod().name());
}
})
.globalOperationParameters(操作参数)
.apinfo(新的ApiInfoBuilder().title(env.getProperty(“env”)+env.getProperty(“appname”))
.description(环境获取属性(“描述”)).contact(新联系人)(环境获取属性(“联系人名称”),
env.getProperty(“联系url”)、env.getProperty(“联系电子邮件”))
.version(“1.1”).build();
}
private com.google.common.base.Predicate postPaths(){
返回谓词.not(PathSelectors.regex(“/v1.*”);
}
私有com.google.common.base.Predicate路径(){
返回或(
regex(“/v1.*”),regex(/health.*);
}
}

检查这两个选项中是否有一个对您有帮助