【swagger的部署和使用】
【swagger的部署和使用】
提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。
所有文章都*不会*直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~
本文章是系列文章,技术栈内容为:【springboot+vue】【前后分离】
【详细图文,实操步骤分享,节约时间版】。最终完成一个商业化项目。内容有:
springboot知识
mybatisPlus知识
vue知识
node.js知识
本小节的内容是:
springboot篇章 之 : 3.swagger的部署和使用
本小节-附一个小节(建议观看)(保证 主要章节内容篇幅不大,且不繁琐):
[RESTful风格]正传ing
REST(英文:Representational State Transfer)是现代Web服务开发中广泛采用的一种API设计规范)通过简洁、统一、标准化的方式实现分布式系统间的交互。正是有这个风格的规定和约束,才有一个swagger来提供这个服务
而swagger为接口管理工具,正好为前端和后端开发做一个 规范的 、 统一的 交互窗口和沟通窗口
文章目录
- 【swagger的部署和使用】
- 前言
- 一、导入依赖
- 二、准备环境和配置
- 三、启动查看接口文档
- 注意事项
- 总结
前言
本文章为一个系列文章的第三节,目的是快速去实现一个前后分离 springboot+vue
所以是基于springboot来实现swagger的
所以,您需要有一个springboot项目,来部署您的swagger文档管理工具
创建idea的springboot链接:
【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
【上榜文章,一文搞定】现在springboot是3.x以上版本,jdk版本至少要求17.但是很多时候我们电脑是jdk1.8(求稳定性和安全性)。文本分享本机电脑1.8的jdk。idea如何非常简洁快速的创建springboot
文章里面也有 为什么只能是jdk17起和地址指定为阿里云报错的解决办法
一、导入依赖
在pom.xml里面添加依赖
放到dependencies标签中间
<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>
刷新maven
如果电脑第一次添加这个依赖,需要等待下载一会
二、准备环境和配置
根据02文章的结果,继续在工具类包utils里面创建一个类为:SwaggerConfig
编写代码:
package com.bbz.bbzspring.utils;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration // 告诉容器,这是配置类
@EnableSwagger2 //启动swagger功能
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2) // DocumentationType.SWAGGER_2 固定的,代表swagger2//.groupName("分布式任务系统") // 如果配置多个文档的时候,那么需要配置groupName来分组标识.apiInfo(apiInfo()) // 用于生成API信息 这里引用了下面的方法名字(对应的).select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档// 扫描指定包下的接口,最为常用.apis(RequestHandlerSelectors.basePackage("com"))//.withClassAnnotation(RestController.class) // 扫描带有指定注解的类下所有接口//.withMethodAnnotation(PostMapping.class) // 扫描带有指定注解的方法接口//.apis(RequestHandlerSelectors.any()) // 扫描所有// 选择所有的API,如果你想只为部分API生成文档,可以配置这里.paths(PathSelectors.any()//.any() // 满足条件的路径,该断言总为true//.none() // 不满足条件的路径,该断言总为false(可用于生成环境屏蔽 swagger)//.ant("/user/**") // 满足字符串表达式路径//.regex("") // 符合正则的路径).build();}/*** 用于定义API主界面的信息,比如可以声明所有的API的总标题、描述、版本* @return*/private ApiInfo apiInfo() {Contact contact = new Contact( //这个类是springfox包里面的作者类"我是作者帮帮志", // 作者姓名"https://csdn.net/", // 作者网址"xxx@xxx.com"); // 作者邮箱return new ApiInfoBuilder().title("帮帮志项目API") // 可以用来自定义API的主标题.description("帮帮志项目SwaggerAPI管理") // 可以用来描述整体的API.termsOfServiceUrl("这是例子:https://www.baidu.com") // 用于定义服务的域名(跳转链接).version("1.0") // 可以用来定义版本.license("Swagger-的使用教程").licenseUrl("https://.csdn.net").contact(contact)//传入作者对象参数.build(); //}
}
三、启动查看接口文档
正常启动springboot项目
访问网址:http://localhost:8080/swagger-ui.html
您有几个controller类(关联前端的类) 就生成几个菜单。
每个菜单点开:类里面有几个方法,就生成几个对应方法的图标。用不同的颜色标记不同的提交方式
这些刚好是我上一个文章 写的controller类和对应里面的四个方法
注意事项
如果您不能访问这个网址(固定的:http://localhost:8080/swagger-ui.html)
需要在springboot的配置文件application.properties里面添加:
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
因为:
在springboot2.6.0中将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser,导致出错,解决办法是切换会原先的AntPathMatcher。所以springboot2.6.0以后的加上这个就可以了
如果进入网站,所有都正常,但是下面显示:No operations defined in spec!
表示它认为您没有任何controller类和方法
但是,您又确实写了,swagger却没有在网页文档里面显示,那么检查:
1.swagger配置类里面的.apis(RequestHandlerSelectors.basePackage(“com”)) 是不是写错范围了
2.Controller类没有被扫描进容器,所以容器认为当前项目没有Controller类
3.如果您是多个项目与项目之间的关联(功能是一个springboot项目,启动是另一个springboot)。项目引用关系检查一下
4.swagger的配置文件类是不是写错地儿了。容器压根就没有去扫描swagger类
总结
说明一下:整个这个系列实现前后分离的springboot+vue项目。序号文章一共也就10几篇,只有核心图文重点操作步骤来实现这个目标(基本上您边看边写:一个小时或者一上午就能跟着一起手搓一个前后分离项目,然后您可以自行添加功能和内容在您项目里面)
其他扩展细节知识点,本系列省略了(或者有链接)如:
swagger的详细注解,分别写在类上面和方法上面,这些信息会在网页文档里面显示:这个类是干嘛的,这个方法是干嘛的,方法需要什么参数,方法执行完毕,会怎么样等等
(后续会上传详细版swagger)
(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)