后端整合 Swagger + Knife4j
-
引入依赖(Swagger 或 Knife4j:官方文档https://doc.xiaominfo.com/knife4j/documentation/get_start.html)
<!--引入Knife4j的官方start包,Swagger2基于Springfox2.10.5项目--> <dependency> <groupId>com.github.xiaoymin</groupId> <!--使用Swagger2--> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.9</version> </dependency>
-
自定义 Swagger 配置类
/** * 自定义Swagger 接口文档的配置 */ @Configuration @EnableSwagger2WebMvc public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //为当前包路径,控制器类包(这里一定要标注你的控制器位置) .apis(RequestHandlerSelectors.basePackage("com.xxx.usercenter.controller")) .paths(PathSelectors.any()) .build(); } //构建 api文档的详细信息函数,注意这里的注解引用的是哪个 private ApiInfo apiInfo() { return new ApiInfoBuilder() //页面标题 .title("xxxx系统") //创建人 .contact(new Contact("golo", "http://www.baidu.com", "1111111111@qq.com")) //版本号 .version("1.0") //描述 .description("统一身份认证系统接口文档") .build(); } }
-
定义需要生成接口文档的代码位置(Controller)
-
启动即可(访问http://localhost:8080/doc.html)
-
可以通过在 controller 方法上添加 @Api、@ApiImplicitParam(name = "name",value = "姓名",required = true) @ApiOperation(value = "向客人问好") 等注解来自定义生成的接口描述信息
避坑避坑!!!
-
如果开发者使用的是Knife4j 2.x版本,并且Spring Boot版本高于2.4,那么需要在Spring Boot的yml文件中做如下配置:
spring: mvc: pathmatch: matching-strategy: ANT_PATH_MATCHER
-
千万注意:线上环境不要把接口暴露出去(如果别人知道你的swagger地址可以直接调试接口甚至拿到一些不应拿的数据)!!!可以通过在 SwaggerConfig 配置文件开头加上
@Profile({"dev", "test"})
限定配置仅在部分环境开启也可在生成环境yml配置文件中加上配置:
knife4j: # 开启增强配置 enable: true # 开启生产环境屏蔽 production: true
production: true时就访问不了swagger了
测试环境改成 production: false
-
如果有拦截器,请放行以下地址:
/** * 放行Swagger */ public static final String[] SWAGGER_WHITELIST = { "/swagger-ui.html/**", "/swagger-ui/**", "/swagger-resources/**", "/v2/api-docs", "/v3/api-docs", "/v3/api-docs/swagger-config", "/webjars/**", "/doc.html", };
相关链接
Knife4j官网链接:https://doc.xiaominfo.com/docs/quick-start
转载至:
https://blog.csdn.net/qq_42495847/article/details/121424389
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?