swagger2使用指南
引入依赖
通过Maven引入需要的依赖。
<dependency>
<groupId>com.huaweicloud.devspore</groupId>
<artifactId>swagger-extension-springfox</artifactId>
<version>${devspore-swagger-extension.version}</version> #版本号,版本号可参考AstroPro-SDK版本变更与下载。
</dependency>
添加配置
com.huaweicloud.devspore:swagger-extension-springfox组件提供了如下配置项:
|
配置项 |
类型 |
默认值 |
说明 |
|---|---|---|---|
|
devspore.swagger-extension.springfox.enable |
Boolean |
true |
是否对springfox-swagger进行扩展增强。 |
|
devspore.swagger-extension.package-name |
String |
无 |
使用此swagger生成代码时期望的package。 |
|
devspore.swagger-extension.generate-mode |
Enum(CLIENT, SERVER) |
CLIENT |
使用此swagger生成客户端代码或服务端代码。 |
|
devspore.swagger-extension.client-model-package |
String |
model |
使用此swagger生成客户端代码时实体类的包名,默认为model。 |
|
devspore.swagger-extension.additional-pom-gav |
List<String> |
无 |
使用此swagger生成代码时需要添加的pom依赖。 |
其中,devspore.swagger-extension.package-name为必填项,否则用此swagger文档生成的客户端代码编译将会有问题。
添加自定义注解
若有需要为方法添加一些自定义的特定注解,devspore-swagger-extension组件也提供了扩展机制,定义了如下接口:
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import java.util.List;
public interface MethodAnnotationHandler {
List<Annotation> getAnnotations(HandlerMethod handlerMethod, RequestMappingInfo requestMappingInfo);
}
关键类:
@Data
public class Annotation {
/**
* 最终生成注解名字,eg: @SuppressWarnings("deprecation")
*/
private String name;
/**
* 注解需要的import,eg: lombok.NonNull; (注意:每个import必须添加末尾的英文分号)
*/
private List<String> imports;
}
使用者需实现此接口,并将对应实现类注入到spring的上下文里,如下为默认实现:
@Bean
@ConditionalOnMissingBean(MethodAnnotationHandler.class)
public MethodAnnotationHandler methodAnnotationHandler() {
return ((handlerMethod, requestMappingInfo) -> new ArrayList<>());
}
获取swagger描述文档
启动项目后,访问http://{domain-url}/v2/api-docs,获取swagger描述文档。
泛型类处理示例
原有泛型类:
public class Result <T>{
private T data;
private String code;
private String status;}
springfox默认生成的泛型类swagger描述:
Result«string»:
type: object
properties:
code:
type: string
data:
type: string
status:
type: string
title: Result«string»
使用此组件后生成的泛型类swagger描述:
在不破坏原有swagger的前提下,添加如下自定义swagger标签。
- x-generic:表示类的泛型参数。
- x-generic-class:表示泛型类名称。
- x-type:表示类成员的泛型类型。
Result«string»:
type: object
properties:
code:
type: string
data:
type: string
x-type: T
status:
type: string
title: Result«string»
x-generic-class: Result
x-generic: T
以上自定义标签仅在使用AstroPro平台以swagger方式生成代码时使用。