在Ubuntu上进行Swagger扩展开发,主要基于OpenAPI规范和Spring生态工具,以下是关键步骤:
基础环境准备
sudo apt update
sudo apt install nodejs npm openjdk-11-jdk
sudo npm install -g swagger-jsdoc swagger-ui-express
定义API规范
swagger.json
或swagger.yaml
文件,或通过Swagger Editor编辑。{
"swagger": "2.0",
"info": { "title": "API文档", "version": "1.0" },
"paths": {
"/api/hello": {
"get": { "summary": "示例接口", "responses": { "200": { "description": "成功" } } }
}
}
}
集成到Spring Boot项目
<!-- Swagger 2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- 或 Swagger 3(OpenAPI 3.0) -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.8.5</version>
</dependency>
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
.paths(PathSelectors.any())
.build();
}
}
高级扩展开发
ParameterBuilderPlugin
、ApiListingScannerPlugin
等接口扩展参数解析、接口扫描逻辑。
@Component
public class CustomHeaderPlugin implements ParameterBuilderPlugin {
@Override
public void apply(ParameterContext context) {
context.parameterBuilder()
.name("X-Custom-Header")
.description("自定义请求头")
.required(true)
.parameterType("header");
}
@Override
public boolean supports(DocumentationType delimiter) {
return true;
}
}
SwaggerResourcesProvider
合并不同模块的OpenAPI规范。测试与部署
http://localhost:8080/swagger-ui.html
http://localhost:8080/swagger-ui/index.html
swagger-maven-plugin
生成离线文档,便于分享。参考来源: