Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot开发案例之整合Swagger篇

SpringBoot开发案例之整合Swagger篇

原创
作者头像
小柒2012
发布于 2018-03-30 10:51:27
发布于 2018-03-30 10:51:27
1.6K7
举报
文章被收录于专栏:IT笔记IT笔记
zhifuAPI.png
zhifuAPI.png

前段时间整合过的一个支付服务,由于使用了Spring Boot快速开发,但是又懒得写详细的文档介绍,便顺手就把Swagger整合进来了,对支付服务进行分组API展示,如上图。

简介

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新 。接口的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。

在实际开发过程中,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Android开发、Web开发等。为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题:

  • 由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳
  • 随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象

而swagger完美的解决了上面的几个问题,并与Spring boot程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能 来调试每个RESTful API。

添加Swagger2依赖

代码语言:txt
AI代码解释
复制
<!-- swagger2 文档 截止目前 为最新版本 -->
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger2</artifactId>
	<version>2.7.0</version>
</dependency>
<dependency>
	<groupId>io.springfox</groupId>
	<artifactId>springfox-swagger-ui</artifactId>
	<version>2.7.0</version>
</dependency>

创建Swagger2配置类

在Application.java同级包下创建Swagger2的配置类。

代码语言:txt
AI代码解释
复制
@Configuration //让Spring来加载该类配置
@EnableSwagger2 //启用Swagger2
public class Swagger2 {
	@Bean
	public Docket alipayApi() {
		return new Docket(DocumentationType.SWAGGER_2)
		        .groupName("支付宝API接口文档")  
		        .apiInfo(apiInfo())
				.select()
				.apis(RequestHandlerSelectors.basePackage("com.itstyle.modules.alipay"))
				.paths(PathSelectors.any()).build();
	}
	@Bean
	public Docket weixinpayApi() {
		return new Docket(DocumentationType.SWAGGER_2)
		        .groupName("微信API接口文档")  
		        .apiInfo(apiInfo())
				.select()
				.apis(RequestHandlerSelectors.basePackage("com.itstyle.modules.weixinpay"))
				.paths(PathSelectors.any()).build();
	}
	@Bean
	public Docket unionpayApi() {
		return new Docket(DocumentationType.SWAGGER_2)
		        .groupName("银联API接口文档")  
		        .apiInfo(apiInfo())
				.select()
				.apis(RequestHandlerSelectors.basePackage("com.itstyle.modules.unionpay"))
				.paths(PathSelectors.any()).build();
	}
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				.title("支付系统")
				.description("微信、支付宝、银联支付服务")
				.termsOfServiceUrl("http://blog.52itstyle.com")
				.contact(new Contact("科帮网 ", "http://blog.52itstyle.com", "345849402@qq.com"))
				.version("1.0").build();
	}

}

添加API注解

API说明:

代码语言:txt
AI代码解释
复制
/**
  swagger2使用说明:
         @Api:用在类上,说明该类的作用
         @ApiOperation:用在方法上,说明方法的作用
		 @ApiIgnore:使用该注解忽略这个API
         @ApiImplicitParams:用在方法上包含一组参数说明
         @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
            paramType:参数放在哪个地方
                 header-->请求参数的获取:@RequestHeader
                 query-->请求参数的获取:@RequestParam
                 path(用于restful接口)-->请求参数的获取:@PathVariable
                 body(不常用)
                 form(不常用)
             name:参数名
             dataType:参数类型
             required:参数是否必须传
             value:参数的意思
             defaultValue:参数的默认值
         @ApiResponses:用于表示一组响应
         @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
             code:数字,例如400
             message:信息,例如"请求参数没填好"
             response:抛出异常的类
         @ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
            @ApiModelProperty:描述一个model的属性
 */

代码实现:

代码语言:txt
AI代码解释
复制
/**
 * 银联支付
 * 创建者 科帮网
 * 创建时间	2017年8月2日
 */
@Api(tags ="银联支付")
@Controller
@RequestMapping(value = "unionpay")
public class UnionPayController {
    private static final Logger logger =    LoggerFactory.getLogger(AliPayController.class);

    @Autowired
    private IUnionPayService unionPayService;

@ApiOperation(value="银联支付主页")   @RequestMapping(value="index",method=RequestMethod.GET)
    public String   index() {
        return "unionpay/index";
    }

@ApiOperation(value="电脑支付")	
@RequestMapping(value="pcPay",method=RequestMethod.POST)
@ApiImplicitParam(name = "product", value = "产品信息", required = true, dataType = "Product")
   public String  pcPay(Product product,ModelMap map) {
		logger.info("电脑支付");
		product.setPayWay(PayWay.PC.getCode());
		String form  =  unionPayService.unionPay(product);
		map.addAttribute("form", form);
		return "unionpay/pay";
    }
@ApiIgnore//使用该注解忽略这个API
@ApiOperation(value="手机H5支付")
@RequestMapping(value="mobilePay",method=RequestMethod.POST)
    public String  mobilePay(Product product,ModelMap map) {
		logger.info("手机H5支付");
		product.setPayWay(PayWay.MOBILE.getCode());
		String form  =  unionPayService.unionPay(product);
		map.addAttribute("form", form);
		return "unionpay/pay";
    }
}

访问

配置完成后,我们重启服务,访问地址 http://localhost:8080/项目名/swagger-ui.html,如:

代码语言:txt
AI代码解释
复制
http://localhost:8080/springboot_pay/swagger-ui.html

完整项目案例可查看 支付服务

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
7 条评论
热度
最新
移动支付已经全球化了,菜市场,甚至小摊贩都支持了
移动支付已经全球化了,菜市场,甚至小摊贩都支持了
回复回复点赞举报
Swagger aides in development across the entire API lifecycle, from design and documentation, to test and deployment.
Swagger aides in development across the entire API lifecycle, from design and documentation, to test and deployment.
回复回复点赞举报
文件上传,下载,swagger需要怎么配置可以直接在页面测试
文件上传,下载,swagger需要怎么配置可以直接在页面测试
11点赞举报
配置完成后,我们重启服务,访问地址 http://localhost:8080/项目名/swagger-ui.html 可以进行相关的接口测试
配置完成后,我们重启服务,访问地址 http://localhost:8080/项目名/swagger-ui.html 可以进行相关的接口测试
回复回复点赞举报
很好的教程,移动支付现在已经大众化,作者的文章很详细
很好的教程,移动支付现在已经大众化,作者的文章很详细
11点赞举报
移动支付快全球化了~~~ 菜市场的大妈
移动支付快全球化了~~~ 菜市场的大妈
回复回复点赞举报
感谢作者的接口!
感谢作者的接口!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
第九节:SpringBoot在线文档Swagger2入门
Swagger2 是一个开源项目,用于为 RESTful Web 服务生成 REST API 文档。它提供了一个用户界面,可以通过 Web 浏览器访问我们的 RESTful Web 服务,测试接口。 SpringBoot集成Swagger2 3.0以下版本 pom.xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </
入门笔记
2022/02/10
4850
SpringBoot集成Swagger学习总结
4.4 @ApiImplicitParams 和 @ApiImplicitParam
叫我阿杰好了
2022/11/07
4050
SpringBoot集成Swagger学习总结
SpringBoot整合Swagger,让开发更遍历
Swagger 是一种流行的开源工具集,用于设计、构建、记录和使用 RESTful Web 服务的 API( https://swagger.io/ )。它包含了一系列工具,可以帮助开发人员在开发 API 时更加高效地进行设计、测试和文档编写。下面是 Swagger 的一些主要功能和组件:
.29.
2024/05/26
4231
SpringBoot整合Swagger,让开发更遍历
spring boot 下swagger2 的使用
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
acc8226
2022/05/17
7390
spring boot 下swagger2 的使用
springboot整合swagger
http://localhost:8080/swagger-ui/index.html
九转成圣
2024/04/10
1960
SpringBoot之API--Swagger2接口文档管理
本地的访问地址: http://localhost:9091/swagger-ui.html
MiChong
2020/09/24
5310
Spring Boot:整合Swagger文档
spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口。这些接口不但会服务于传统的web端(b/s),也会服务于移动端。在实际开发过程中,这些接口还要提供给开发测试进行相关的白盒测试,那么势必存在如何在多人协作中共享和及时更新API开发接口文档的问题。 
朝雨忆轻尘
2019/06/19
1K0
Spring Boot:整合Swagger文档
REST API文档工具Swagger2,以及与SpringBoot的集成
swagger是一个API框架,号称世界上最流行的API工具。它提供了API管理的全套解决方案,比如API在线编辑器,APIUI展示界面,代码生成器等诸多功能。 Swagger官方地址
飞狗
2018/09/10
1.2K0
REST API文档工具Swagger2,以及与SpringBoot的集成
springboot实战之swagger整合
ps:排除2.9.2版本的swagger-models和swagger-annotations,而引入1.5.21版本,是因为使用2.9.2版本时,当字段为数值型映射文档字段属性会出异常
lyb-geek
2019/11/07
1.4K0
springboot实战之swagger整合
Spring Boot从零入门6_Swagger2生成生产环境中REST API文档
在如今前后端分离开发的模式下,前端调用后端提供的API去实现数据的展示或者相关的数据操作,保证及时更新和完整的REST API文档将会大大地提高两边的工作效率,减少不必要的沟通成本。本文采用的Swagger2就是一个当前流行的通过少量的注解就可以生成漂亮的API文档工具,且在生成的在线文档中提供类似POSTMAN直接调试能力,不仅仅是静态的文档。接下来将会利用这个工具与Spring Boot项目结合,最终生成我们上一篇文章中所涉及到的REST API文档。
别打名名
2019/12/23
2.5K0
Spring Boot从零入门6_Swagger2生成生产环境中REST API文档
原 JAVA懒开发:整合swagger对测
swagger 什么是swagger        swagger中文“拽”的意思。它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试。另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字。 添加Swagger2依赖 <!-- swagger2与swagger-ui同一版本 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swag
kinbug [进阶者]
2018/06/13
1.3K0
SpringBoot系列(六)最好用的api文档配置swagge
 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。
全栈学习笔记
2022/03/31
6300
SpringBoot系列(六)最好用的api文档配置swagge
SpringBoot2.0 整合 Swagger2 ,构建接口管理界面
整合到Spring Boot中,构建强大RESTful API文档。省去接口文档管理工作,修改代码,自动更新,Swagger2也提供了强大的页面测试功能来调试RESTful API。
知了一笑
2019/07/19
9930
SpringBoot2.0 整合 Swagger2 ,构建接口管理界面
SpirngBoot整合Swagger
由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。
框架师
2021/03/05
1.3K0
SpringBoot 项目集成Swagger2
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。 作用:
Freedom123
2024/03/29
1520
SpringBoot 项目集成Swagger2
Swagger最基础整理(附赠项目源码和视频)
Swagger是一套围绕Open API规范构建的开源工具,可以帮助设计,构建,记录和使用REST API。
ha_lydms
2023/08/10
5080
Swagger最基础整理(附赠项目源码和视频)
Swagger 3.0快速入门
SpringBoot项目整合swagger2需要用到两个依赖:springfox-swagger2和springfox-swagger-ui,用于自动生成swagger文档。
大忽悠爱学习
2021/11/15
1.7K0
swagger生成接口文档
OpenAPI规范(OpenAPI Specification 简称OAS)是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程,目前版本是V3.0,并且已经发布并开源在github上。
周杰伦本人
2022/10/25
1.5K0
一文搞懂Swagger,让你明白用了Swagger的好处!!!
前后端分离缺陷 了解Swagger之前,需要先知道什么是前后端分离 现在的时代 SpringBoot + VUE 以前的时代 SSM + JSP模板引擎====>后端程序员 前后端分离时代 通过相关的
框架师
2020/06/16
4.6K2
十、Spring boot 简单优雅的整合 Swagger2
swagger2 是什么,我这里就不说了,就是一个简单的接口文档,方便前后端联调。
程序员爱酸奶
2020/02/29
1.1K0
相关推荐
第九节:SpringBoot在线文档Swagger2入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档