在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
生成离线文档,便于分享。参考来源: