Spring整合Swagger教程

本文档详细介绍了如何在SpringBoot项目中集成Swagger2,创建RESTful API文档。从添加依赖、下载Swagger-UI界面、配置Swagger、修改路径匹配策略到编写测试用例,每个步骤都有清晰的说明。最后展示了实现的效果,并提供了优化入口以方便快速访问自定义的API文档。
摘要由CSDN通过智能技术生成

目录

一.导入Swagger依赖

二.前往github下载swagger-ui界面

三.把下载好的swagger-ui-x.xx.x.zip里的dist文件拖到项目resources/static静态文件夹

四.填写Swagger配置类,最关键的一步

五.更改application.yml里的路径匹配策略

六.写测试案例

七.实现效果


一.导入Swagger依赖

        <dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>3.0.0</version>
		</dependency>

二.前往github下载swagger-ui界面

        地址: swagger下载地址

        下载UI界面要对应OpenAPI版本,由于我用的是swagger2-3.0.0版本,所以用UI version4.X以上不影响

三.把下载好的swagger-ui-x.xx.x.zip里的dist文件拖到项目resources/static静态文件夹

        这里不一定放到static文件夹里,可以根据自己目的存放文件夹位置

四.填写Swagger配置类,最关键的一步

        大部分人运行不成功,是因为配置类写的不对的原因,这里一定要注意你用的是什么swagger版本,然后根据自己的版本配置,不同版本配置的参数会有一定的差异,然后就是扫描包,扫描包这里也要扫描对,如果扫描错了,UI页面那边只会显示No operations defined in spec!,扫描不清楚的可以参考 swagger报错 :No operations defined in spec! 解决方法_柳牧之的博客-CSDN博客

这里由于我用的是ApiOperation注解,所以我直接扫描ApiOperation注解类就行了。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import io.swagger.annotations.ApiOperation;
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;

/**
 * 
 * @author AWen
 * @date 2022年11月11日 
 */

@EnableSwagger2
@Configuration
public class SwaggerConfig {

	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo())
				.select()
				//扫描包,如果配置错误swagger页面会出现No operations defined in spec!
				.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
				.paths(PathSelectors.any())
				.build();
	}

	private ApiInfo apiInfo(){
		return new ApiInfoBuilder()
				.title("MES接口")
				.description("接口文档")
				.contact(new Contact("阿文","http://xiewenwen.top","921124136@qq.com"))
				.version("1.0")
				.build();
	}
}

五.更改application.yml里的路径匹配策略

        由于swagger支持的路径匹配方式是ant-path-matcher策略,spring boot版本太高默认是path-pattern-parser,所以这里使用spring boot高版本的小伙伴需要更改一下,否则高版本运行项目时会报空指针。

        感兴趣的小伙伴也可以研究一下path-pattern-parser和ant-path-matcher的区别

Spring5新宠:PathPattern,AntPathMatcher:那我走?_方向盘(YourBatman)的博客-CSDN博客

六.写测试案例

常用的注解都在这些测试案例里,还有很多其他注解可以自行百度

先写一个Controller类

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import top.xiewenwen.common.vo.JsonResult;
import top.xiewenwen.common.vo.User;

/**
 * 
 * @author AWen
 * @date 2022年11月10日 
 */
@RestController
@RequestMapping("/swagger")
@Api(value = "MES接口")
public class SwaggerController {
 
    @GetMapping("/get/{id}")
    @ApiOperation(value = "根据用户唯一标识获取用户信息")
    public JsonResult getUserInfo(@PathVariable @ApiParam(value = "用户唯一标识") Long id) {
            // 模拟数据库中根据id获取User信息
            User user = new User(id, "zhuangzi", "123456");
            return new JsonResult(user);
    }
 
}

写User类

package top.xiewenwen.common.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 
 * @author AWen
 * @date 2022年11月10日 
 */
 
@ApiModel(value = "用户实体类")
public class User {
    @ApiModelProperty(value = "用户唯一标识",example = "1")
    private Long id;
    @ApiModelProperty(value = "用户名",example = "1")
    private String username;
    @ApiModelProperty(value = "用户密码",example = "1")
    private String userpwd;
 
    public User(Long id, String username, String userpwd) {
        this.id = id;
        this.username = username;
        this.userpwd = userpwd;
    }

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getUserpwd() {
		return userpwd;
	}

	public void setUserpwd(String userpwd) {
		this.userpwd = userpwd;
	}
    
    
}

写JsonResult类

package top.xiewenwen.common.vo;

import java.io.Serializable;

public class JsonResult implements Serializable{
	private static final long serialVersionUID = -1;
	/**状态码*/
	private String result="true";//true表示SUCCESS,false表示ERROR
	/**状态信息*/
	private String message="ok";
	/**正确数据*/
	private Object data;
	public JsonResult() {}
	public JsonResult(String message){
		this.message=message;
	}
	/**一般查询时调用,封装查询结果*/
	public JsonResult(Object data) {
		if(data.toString().equals("[]")) {
			this.result="false";
			this.message="未获取到数据";
		}
		this.data=data;
	}
	/**出现异常时时调用*/
	public JsonResult(Throwable t){
		this.result="false";
		this.message=t.getMessage();
	}
	public String getResult() {
		return result;
	}
	public void setResult(String result) {
		this.result = result;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public Object getData() {
		return data;
	}
	public void setData(Object data) {
		this.data = data;
	}
}

七.实现效果

运行项目,访问静态文件的index.html

        这里打开是UI界面默认的接口路径,所以要换成我们自己的接口路径,在上面收索自己的接口路径,不一样的版本,接口路径不一样,我的是 http://localhost:8085/v2/api-docs ,使用swagger3版本的小伙伴路径有可能是 http://localhost:8085/v3/api-docs ,不清楚自己版本接口的小伙伴,可以自行百度一下,然后填写自己的swagger接口,点击旁边Explore按钮,就能看见swagger的接口文档,下面那两个是我另外加的

        由于每次进入界面需要收索很麻烦,可以找到dist文件里的swagger-initializer.js文件,把默认路径改成自己的路径就行了,这样打开index.html就是自己的文档了,感觉界面不好看的也可以根据自己喜欢更爱css文件,或者用第三方页面调用接口是一样的,这篇文章到这结束,希望对您有帮助。

qq_921124136
关注 关注
  • 30
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot整合swagger使用教程(这一篇就够了)
qq_27480007的博客
09-03 1万+
Spring Boot整合swagger使用教程(这一篇就够了)
SpringMVC 集成 Swagger2
06-01
SpringMVC 集成Swagger2,相关说明可以打开 https://blog.csdn.net/everyday_hzg/article/details/80537902
SpringBoot整合Swagger2,代码文档一手抓
write less , do more
07-24 1035
Swagger是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务以及 集成Swagger自动生成API文档。Swagger 的目标是对REST [API]定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
spring集成swagger
李章勇的博客
03-21 308
spring集成swagger   随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染、前后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。 前端和后端的唯一联系,变成了API接口;API文档变成了前后端开发人员联系的纽带,变得越来越重要,swagger就是一款让我们更好地书写API文档的框架。swagger可...
Springboot集成Swagger
weixin_51351637的博客
03-18 1万+
之前开发的时候,前端只用管理静态页面, http请求到后端, 模板引擎JSP,故后端是主力如今是前后端分离时代:后端后端控制层,服务层,数据访问层前端:前端控制层,视图层伪造后端数据(JSON格式),便不再需要后端 ,方便了开发,等到前后端都开发完成之后,便不再使用伪造数据,而是访问远程后端接口前后端如何交互?
基于SpringMVC下的Rest服务框架搭建【1、集成Swagger
weixin_30354675的博客
08-18 188
基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】 1、需求背景 SpringMVC本身就可以开发出基于rest风格的服务,通过简单的配置,即可快速开发出一个可供客户端调用的rest服务,通常这些服务要不就是用于手机app的开发,要不就是提供给第三方开发者使用,不管哪种情况,你都需要提供详细的说明给别人,而Swagger就是为这种情况而生的,通过在接口上的注解,生...
Spring简单整合Swagger
可达鸭的博客
05-25 665
sping配置swagger
详解spring cloud整合Swagger2构建RESTful服务的APIs
08-28
Spring Cloud 整合 Swagger2 构建 RESTful 服务的 API Spring Cloud 是一个基于 Java 的微服务架构方案,它提供了许多实用的工具和组件来帮助开发者构建微服务架构的应用程序,而 Swagger2 则是一个流行的 API ...
spring boot 2.6.11+springcloud Swagger3构建微服务项目源码
10-28
Spring Boot应用中集成Swagger3,我们可以生成清晰的API文档,方便开发者理解和使用接口。Swagger UI允许我们在浏览器中直接测试API,极大地提高了开发效率和用户体验。Swagger3相比于之前的版本,提供了更多强大...
Spring Boot整合swagger使用教程详解
08-18
Spring Boot整合Swagger使用教程详解 本文主要介绍了如何将Swagger集成到Spring Boot项目中,以自动生成接口文档,提高开发效率和减少维护成本。 知识点一:Swagger的优点 * 自动生成文档:Swagger可以根据接口的...
Spring Boot 2.7.5 集成 Swagger 3
11-22
集成Swagger 3到Spring Boot项目中,可以帮助开发者更有效地管理和维护API,同时提供一个交互式的用户界面,让前端开发者能够轻松地了解和测试后端接口。 首先,要在Spring Boot 2.7.5项目中集成Swagger 3,我们...
springmvc与swagger swagger-ui 集成demo
06-22
对应博文:http://blog.csdn.net/maskice/article/details/51735498
springboot - 2.7.3版本 - (三)整合Swagger3
09-22
SpringBoot项目中整合Swagger3,可以实现自动化接口文档的生成,为团队协作提供便利。 首先,整合Swagger3需要引入相应的依赖。在SpringBoot的`pom.xml`文件中,添加`springdoc-openapi-ui`和`springdoc-openapi-...
spring整合Swagger
狂奔小蚂蚁的博客
05-06 6412
Spring整合Swagger 1.我这里使用的spring版本是4.1.2.RELEASE 2.导入Swagger的maven依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> &l...
SpringSwagger整合
NCHUtianlin的博客
04-24 615
SpringSwagger整合 新建项目 打开IDEA,点击File --> New --> Project, 选择Spring Initializer 填写Group和Artifact,默认也可以,选择自己使用的JDK版本 选择依赖,可以选择Web 项目名称、项目文件存在路径 这样一个简单的Spring项目就创建好了,项目基本目录如下 创建controller 启动类已经默认创建好了,我们只需要创建Controller ...
SpringBoot——整合Swagger
最新发布
戏拈秃笔的博客
08-17 1464
Swagger是一款基于RESTful接口的用于文档在线自动生成和功能测试的开发工具 为了减少前后端开发人员在开发期间的频繁沟通,可以使用Swagger提供的接口文档和线上接口进行前后端功能联调
Spring4集成Swagger:真的只需要四步,五分钟速成
热门推荐
一个有点理想的博客
05-16 1万+
如果你所在的公司的还没有使用swagger甚至没有听说过swagger,赶快学习一下我的这篇博客吧,五分钟速成,傻瓜式的集成,但就是这么简单的应用一定会让他们震惊到的。 首先对swagger做一个简介吧:swagger是后台开发的神器,也是前后端交流的渠道。你可以用swagger做什么?首先,你以后基本可以告别单元测试了;其次,你不用再写接口文档了,也不需要写完之后再去对文档进行维护了。swagge
springboot的swagger使用
u013313232的博客
09-02 240
** springboot的swagger使用 ** <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> 首先导入
Spring*】集成swagger
高精尖发展
05-01 445
springboot配置:在入口类*application的同级目录下新建swagger的类:@Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_...
写文章

热门文章

  • 安卓上华为应用市场被打回,说您的应用经检测含有【a.gray.BulimiaTGen.f】病毒 14979
  • Spring整合Swagger教程 4464
  • spring mybatis获取更新返回更新成功的数量 3011
  • okhttp3 Websocket close 报错 java.lang.IllegalArgumentException: Code must be in range [1000,5000): 1 2297
  • java.lang.IllegalArgumentException: Invalid URL host: ““问题 2171

最新评论

  • 集成JDA(java discord API)报Failed to connect to ‘gateway.discord.gg:443‘

    qq_921124136: 这个我就没细究了,你可以看看源码

  • 集成JDA(java discord API)报Failed to connect to ‘gateway.discord.gg:443‘

    阿U不想敲代码: 我发现我设置bot时设置权限里面没有ReadMessages/ViewChanels,所以我只能选单独那个ViewChanels

  • 集成JDA(java discord API)报Failed to connect to ‘gateway.discord.gg:443‘

    阿U不想敲代码: 牛啊牛啊,我也出现这种问题了,然后根据你的方法配置了ws代理成功了,但是我a机器人问b机器人消息可以发出但是b不回答表情包

  • Spring 集成 MobileIMSDK

    qq_921124136: 没理解,你是指一个app登录3个用户,还是啥意思

  • Spring 集成 MobileIMSDK

    四叶草@: 你好,我问下,假设现在有3个用户a,b,c,其中一个用户a调用了退出登录的方法,要想b能继续对c发消息,b和c是不是都得重新登录下表情包

最新文章

  • 安卓聊天菜单栏展示实现
  • 安卓shiply热更新入门
  • 安卓AppBarLayout与ViewPager2里的fragment里的webview滑动冲突
2024年13篇
2023年15篇
2022年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家小猪佩奇大型玻璃钢雕塑滨江商场美陈雅安玻璃钢雕塑摆件施工团队玻璃钢雕塑花纹马河南商场美陈生产企业六安校园玻璃钢雕塑厦门港粤玻璃钢座椅雕塑丽水玻璃钢雕塑厂家报价沁阳商场美陈植物墙福建佛像玻璃钢雕塑雕塑玻璃钢手工安徽玻璃钢卡通雕塑厂家冬季商场美陈布置铸铜玻璃钢仿铜雕塑定制美陈制作商场中庭吊饰许昌玻璃钢景观雕塑设计陕西卡通雕塑玻璃钢商场美陈的认识延安商场美陈梅州玻璃钢雕塑厂商场中庭美陈吊饰3d模型汕头玻璃钢卡通雕塑加工厂家雨花商场秋季美陈兴宁玻璃钢座椅雕塑湖南玻璃钢牛动物雕塑艺术摆件大同公园玻璃钢雕塑价格合肥仿铜玻璃钢雕塑价格大庆玻璃钢动物雕塑园林玻璃钢雕塑厂家批发嘉兴景观玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化