-
Notifications
You must be signed in to change notification settings - Fork 224
using swagger
为满足开发需要,Spring Cloud Huawei提供接口契约生成组件,目前只支持Servicecomb引擎契约展示,默认上限为100个,pom依赖如下:
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>spring-cloud-starter-huawei-swagger</artifactId>
</dependency>
默认spring-cloud-starter-huawei-service-engine组件已经包含了swagger依赖,如果由于契约个数受限无法注册,可以剔除swagger依赖正常注册。
2022.0.x/2023.0.x分支目前仅支持Springdoc构建契约信息;
2021.0.x分支支持Springdoc及Servicecomb构建契约信息,1.11.8-2021.0.x及以下版本默认使用Servicecomb构建契约,1.11.9-2021.0.x及之后版本默认使用Spring DOC构建契约;
2020.0.x及其他分支支持Springfox及Servicecomb构建契约信息,默认使用Servicecomb构建契约;
是否使用Servicecomb构建契约可以通过spring.cloud.servicecomb.swagger.enableJavaChassisAdapter配置调整。
- Springdoc
Springdoc实现逻辑中并未考虑@Scope注解作用域问题,而Spring Cloud Huawei是在微服务注册的时候生成的契约,如果接口类中存在注册@Scope("request")或者@Scope("session")时会导致契约生成异常。
1、不支持@Scope("request")或者@Scope("session")生成契约
@RestController
@RefreshScope
//@Scope("request")
@Scope("session")
public class ProviderController {}
2、支持接口定义mapping映射,正常生成契约。
public interface ProviderControllerInterface {
@GetMapping("testInterfaceMapping")
String testInterfaceMapping();
}
@RestController
public class ProviderController implements ProviderControllerInterface{
@Override
public String testInterfaceMapping() {
return "Hello";
}
}
3、Springdoc集成swaggerV3的api,所以接口中的描述注解需要使用V3对应的注解,V2注解在契约生成时无法生效。
- Servicecomb
1、2021.0.x分支在1.11.9-2021.0.x及之后版本当接口类中存在@Scope("request")或者@Scope("session")注解时,忽略该注解的类生成契约,不报异常,其他版本生成契约时异常。
2、接口定义mapping映射时,生成的契约将无法获取mapping映射关系。
3、Springdoc集成swaggerV2的api,所以接口中的描述注解需要使用V2对应的注解,V3注解在契约生成时无法生效。
SwaggerV2(spirngfox或servicecomb)注解 | SwaggerV3(spirngdoc)注解 |
---|---|
@Api | @Tag |
@ApiIgnore | @Hidden or @Parameter(hidden=true) or @Operation(hidden=true) |
@ApiImplicitParam | @Parameter |
@ApiImplicitParams | @Parameters |
@ApiModel | @Schema |
@ApiModelProperty(hidden=true) | @Schema(accessMode=READ_ONLY) |
@ApiModelProperty | @Schema |
@ApiOperation(value="foo",notes="bar",nickname="sayHello") | @Operation(summary="foo",description="bar",operationId="sayHello") |
@ApiParam | @Parameter |
@ApiResponse(code=404,message="foo") | @ApiResponse(responseCode="404",description="foo") |
-
使用Spring Cloud Huawei功能
-
使用服务治理
-
生态集成
-
迁移改造问题
-
配置参考
-
优秀实践
-
常见问题