这年头很流行前后端分离的方式来开发项目,然后我也找了一些有关的资料学习了一下。
前两天学习了一下Swagger自动生成API的方法。然后就有一些自己的总结,感兴趣的可以看看。
我们要了解swagger,我们就要先从前后端分离去入手。按照现在的发展趋势,可以说前后端分离已经是业内对开发和部署方式所达成的一种共识。但是还有很多公司还是采用传统的开发风格,也就是以后端的MVC为主,前端人员只要提供一些静态的HTML页面、JS、CSS、Image等,然后大部分的后端团队担当了大量的开发工作,如后端团队会将前端人员提供的静态素材再配以模板技术如jsp、framemark等,实现项目的开发。在这种一种开发模式下,可以说前端的开发和调试都是需要依赖于后端的web容器的支持,实际上这种开发模式根本无法做到前后端真正的分离。
那到底什么是真正的前后端分离呢?
如图:
真正的前后端分离的方式如上图所示,首先后端开发团队,他们只要专注后端的控制层(Controller层)、服务层(service层)、数据访问层(dao层),整个后台会通过Restful风格的API向前端去提供数据或者讲前端会通过Restful风格的API到后端获取数据。
然后后端开发团队,他们只要专注于前端的控制层、视图层。即除了负责前端的静态页面,还需要负责页面上所有的交互代码以及与后端API的交互工作,它要对API进行相应的调用,并获取到数据,拿到数据后对数据进行相应地处理,将数据在视图层进行相应的展示。最终在前后端分离的模式下,前端可以实现在没有后端API的情况下,还能完美地运行和完美地奔跑。
所以以这样的一种方式形成的前后端分离,无论是在开发上还是在项目部署上都可以说是各自独立且松耦合,这才是真正意义上的前后端分离。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的方法,开发人员只要调用API中所提供的方法就能实现相应的功能,而且开发人员是不用知道方法内部的实现细节。
但是前后端分离也是会给我们带来一些问题的
作为一个web项目来说,在前后端分离模式下可以实现项目的独立开发、部署。但是最终还是需要进行前后端集成的,在集成过程中肯定要进行集成测试以及接口的联调。但是这个集成往往都是令人头痛的问题。
问题:比如在最后集成的时候才发现,最开始设计商量好的数据结构发生了变化,而且这种变化是在所难免的,这样的话,前后端人员在集成的时候肯定要花费大量的时间去集成。
产生这样的问题的原因是前后端人员无法做到”及时协商、尽早解决” 。那么怎么才能保证我们前后端人员在开发的过程中不至于分道扬镳、越走越远呢?
解决方案:首先定义schema(方案/计划),并实时跟踪最新的API,降低集成风险。
即后端主要是开发API,再根据已经定义好的schema来进行数据测试。那么前端团队在开发前端工程当中,也会按照schema来做这个mock数据(模拟的假数据)用进行相应的测试。这样才能达到这个工作的正常进行。
但是这个schema并不是在开始设计好后就不能被修改,是有可能会修改的,比如当需求有变化或者是一开始的设计并不是十分合理,可能考虑得并不是十分周到。我们肯定在后期会对schema做一定的修改,那么在修改的过程中我们要做的是什么?是前后端双方都必须实时跟踪最新的API,如果是实时跟踪那么可能出现这样的问题,比如后端团队修改schema生成最新的API,然后因为前端人员没能及时跟踪最新的API,导致前端人员还是拿着旧的API来进行相应的mock数据的测试以及相应的API接口的调用,那么最后集成的时候肯定会出现问题。
-
Swagger简介
swagger是一个自动生成API说明文档的工具,帮助我们更好地实现前后端分离。swagger号称是全球最流行的API框架,官方的说法是swagger是一个规范的完整的框架,主要是用于生成、描述和调用以及可视化的Restful风格的WEB服务,它是一个既简单又强大的Restful API文档在线自动生成器。另外还有如下特点。
- 它支持API文档与API定义同步更新的特点,即当API有了变化那么API的说明文档也会随之发生变化。
- 它可以直接运行,并且能够在线测试API接口。这是因为它提供了Swagger UI这样的界面,供我们进行API接口的测试。4
- 它是支持多种语言(比如:Java、PHP等)。
Swagger的官网:https://swagger.io/ 有兴趣的同学可以去浏览一下,爱旅行项目中就是使用swagger去自动生成API描述文档。
2.在项目中集成swagger自动生成API文档
- Swagger版本
我们爱旅行是一个SSM项目,那么项目是如何集成Swagger呢?Spring提供了与Swagger集成的工具包叫springfox,springfox它可以让SSM项目与swagger更好地集成。官方提供了两个版本让项目去集成swagger:
- 第一个版本:springfox-swagger2 (新版本)
- 第二个版本:swagger-springmvc (老版本)
3.Spring集成Swagger之项目环境
- 项目环境
- 项目环境
- JDK1.8 一定要jdk1.8,不然跑不起swagger (可不用卸载之前1.7的jdk)
上传jdk-8u11-linux-x64.tar.gz的安装包,命令tar -zxvf -C /usr/local/java解压, 之后配置环境变量。
- 命令:vim -r /etc/profile ,即对profile文件进行编辑,
- 在profile文件中输入下面的命令。
#set java environment JAVA_HOME=/usr/local/java/jdk1.8.0_11 #jdk1.8.0_11 为jdk的版本 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH |
- 命令:source /etc/profile ,对profile文件进行重新加载(让配置起效果)。
- Spring4.1.7
- Mybatis3.2.2
-
- SpringMVC集成springfox-swagger2构建Restful API
-
- Maven依赖
- springfox-swagger2
- springfox-swagger-ui
- guava
- mapstruct-jdk8
- Jackson 因为数据都是json格式,所以要加入json的依赖。
- Jackson-core
- Jackson-databind
- Jackson-annotations
4.Spring集成Swagger之配置步骤
- 在pom.xml文件中添加Swagger2相关的依赖
相关依赖如下所示。
<!--START ======= Swagger所需要的依赖包======= START--> |