舊版Swagger(通常指2.0及以下版本)基于Swagger Specification 2.0,而新版Swagger(如Swagger 3.0及以上)已遷移到OpenAPI Specification 3.0+(OAS 3.0)。這一變化是根本性的,OAS 3.0提供了更靈活的API描述能力,支持更復雜的參數類型(如oneOf
、anyOf
)、更好的多版本管理及更清晰的組件復用(如components
模塊)。
@Api
(標注控制器類)、@ApiOperation
(標注接口方法)、@ApiParam
(標注參數)等注解手動描述API,配置繁瑣且易遺漏。@Api
注解;用@Tag
替代@Api
(用于分組)、@Operation
替代@ApiOperation
(描述接口)、@Parameter
替代@ApiParam
(描述參數),注解更簡潔且符合直覺。springfox-swagger2
和springfox-swagger-ui
依賴,并通過@EnableSwagger2
注解開啟Swagger功能。springdoc-openapi
系列庫(如springdoc-openapi-starter-webmvc-ui
),無需額外注解(僅需@EnableOpenApi
),依賴更輕量且與Spring Boot 3.x兼容性更好。例如,Maven依賴中只需添加springdoc-openapi-starter-webmvc-ui
即可自動生成文檔。新版Swagger更注重與CI/CD流程的無縫集成:
swag init
(Go項目)或springdoc
的自動掃描功能,在代碼變更時自動生成最新的Swagger文檔(如YAML/JSON格式),避免手動維護。swag init
命令,將生成的文檔推送到文檔倉庫。springdoc.api-docs.path
限制文檔訪問路徑,結合UFW(Uncomplicated Firewall)限制IP訪問,避免敏感信息泄露。feature/v1.1
分支開發新版本),結合Docker實現版本隔離(如docker pull swaggerapi/swagger-ui-express
拉取特定版本鏡像),便于團隊協作與回滾。