前后端分离开发实践
来源:互联网 发布:云端软件有哪些 编辑:程序博客网 时间:2024/05/17 03:52
在项目开发中,我们一般都会分为前端开发和后端开发,前端工程师负责浏览器端用户交互界面和逻辑等,后端负责数据的处理和存储等。然而,前端数据是由后端提供的,那么,在后端数据接口还没有完成之前,前端是如何编码的呢?如何才能使前后端相对独立地并行开发?为了减少等待后端接口开发的时间,提高团队的开发效率,我在《系统分析与设计》课程作业——“电影购票系统”的项目开发中引入了前后端开发分离的相关技术。
RESTful API
首先是前后端交互的API的设计。在“电影购票系统”的开发中,我们使用了RESTful API 设计风格。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论,在RESTful(Representation State Transfer)架构中:
1. 每一个URI代表一种资源;2. 客户端和服务器之间,RESTful API是传递资源的Representation;3. 客户端通过四个HTTP动词(GET、POST、PUT、DELETE),对服务器端资源进行操作,实现State Transfer。
例如,在电影购票系统中,与电影资源有关的api带上了“/movie”前缀,与影院资源有关的api带上了“/cinema”前缀,下面是一些api例子:
GET /movie/comingSoon:列出所有即将上映的电影GET /movie/ID:获取某个指定电影的详细信息
Mock Server
那么,在完成API设计后,我是如何构建前端Mock,为前端模拟数据响应的呢?我的做法是,启动一个本地Server作为Mock Server,在本地的Mock Server中模拟一个和线上一样的接口,打破前后端的耦合性,再使用第三方Proxy将Mock Server的接口代理到静态服务器上。如此,在项目前后端联调或者正式上线时,只需将代码中的Mock本地服务器地址替换为真实的服务器地址即可,避免了修改众多接口的麻烦。
在具体的实践上,我使用了Json-Server作为Mock的工具,并使用了mock.js生成测试的假数据,而关于其他测试数据生成技术,我去年也写过一篇相关博客:测试数据的生成——faker、chance和json-schema-faker。
下面我将介绍在“电影购票系统”开发中是如何运用这些技术的。
Json-Server
在将生成的测试假数据放到了data.json文件后,编写package.json的script,以方便以后每次调试启动json-server。
输入npm run mock
指令即可启动json-server,并且列出了可访问的资源Resources。
当进行前端调试时,比如发出获取影院列表的请求时,json-server能够模拟真实的后端服务,给予相应的数据响应并在控制台log请求日志。
this.$http.get(this.serverUrl+"/cinema").then(response => { ...}, response => { ...});
前后端连接调试
当前后端基本开发完成后,便可将前后端连接调试了。前端需要修改请求配置,向真实的Server而不是Mock Server发送请求。
在本次课程作业的开发中,我切实体会到了前后端开发分离的益处。在根据功能需求制定完成前后端API后,使用本地Mock Server协助前端开发,打破前后端的耦合性,使得前后端开发相对独立,前端开发不再依赖远程服务器的数据接口,并且也没有跨域问题。前后端开发分离的方式可以帮助我们构建一个高效、规范、流程化的开发流程。
参考资料:
1. Web前后端分离开发思路
2. 构建前端Mock Server的利器/Json-Server
3. 理解RESTful框架
- 前后端分离开发实践
- 淘宝前后端分离开发模式实践
- 前后端分离实践
- 前后端分离开发
- 实践中的前后端分离
- 前后端分离的一点实践
- 前后端分离项目实践分析
- 前后端分离项目实践分析
- 淘宝前后端分离实践(PPT)
- 前后端分离的思考与实践
- 前后端分离实践(一)
- 谈前后端分离开发模式
- puer实现前后端分离开发
- 前后端分离开发部署模式
- 前后端分离开发部署模式
- 前后端分离的交互式开发模式
- 新手入门——前后端分离开发
- 前后端分离开发的优缺点
- Kotlin笔记(八)Lambda表达式
- 自牛顿以来的科学家-企业家型科学家
- printf和scanf的返回值
- MyFlag Step12:后台代码编写、客户端具体功能实现以及界面优化
- poj3438 Balanced Lineup(RMQ模板题)
- 前后端分离开发实践
- websocket java服务器
- 七牛对象存储上传和下载(简陋)
- QT对话框设计——利用QPalette改变控件颜色
- node---如何替换npm包管理工具伟国内淘宝镜像cnpm
- poj1741 树分治
- Web容器安全管理(上)——Java EE的安全概念
- zookeeper
- org.slf4j.helpers.MessageFormatter.format