我报名参加金石计划一期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情
大多数后端开发人员实现前后端联调的都是这样的:
- 编写后端接口,通过swagger或postman进行接口调试,保证接口正常再交付给前端进行联调
- 将代码部署到开发环境,前端连接开发进行接口对接
- 对接完成之后,统一将前后端代码部署到测试环境进行测试
- 当测试环境测出bug时或者增加,本地修改完代码之后,重复执行前面的三个步骤(本地联调、开发环境联调、测试环境测试)
在执行上面的过程中,通常也会遇到一些麻烦的事:
- 对于一些接口,要提交的参数比较多而且比较复杂时,手动模拟数据会很不方便,直接通过前端交互页面操作会方便很多。
- 在开发环境出现问题时,不能直接通过代码断点调试,只能通过日志等方式将请求参数复制在本地环境运行断点调试。
- 在开发或测试环境验证问题时,需要把时间耗费在等待部署中。
针对以上这些问题,通常有两种解决方案
第一种解决方案:前端代码运行在本地,直连本地后端服务
- 前端代码在手,想怎么调试就怎么调试
- 需要调试其他环境代码时,修改本地代码环境配置即可。
- 本地运行代码,不需要来回提交代码,也大大减少代码部署在服务器上的时间。
这种方式也有两个小问题:1.需要有前端代码权限,并把代码部署到本地,开启前端服务。2. 本地前端环境不是真实服务器上的环境,可能会有细微差别,影响调试效果。
第二种解决方式:修改host,实现在本地模拟其他环境联调。
它原理很简单,原本是向服务器域名请求接口的,修改host之后,这个服务器域名就指向了在host配置的ip地址。如果把域名地址指向本地地址ip,这样就可以实现向本地服务发起请求,实现前后端联调。
下面说说host要注意的几个地方
一、修改host方法
mac
sudo vim /etc/hosts
输入密码,就进入host配置文件
注意:配置ip地址不能指定端口号,所以需要把后端服务端口号改为80
这样前端向 box-ent-api.example.com发起的请求,就会指向本地的服务。
如果不生效(正常改完就可以生效),可以输入 sudo killall -HUP mDNSResponder 使其立即生效。
系统版本不同,输入该命令不同:详见:Reset the DNS cache in OS X - Apple Support
二、处理https请求
有时前端发起的是https请求,通常后端的服务是不支持这样的请求,需要额外的配置支持。如Springboot项目可参考:《Springboot支持HTTPS教程(亲测有效)》
三、处理浏览器的「你的连接不是专用连接」问题
按照第二步操作之后,浏览器还是不支持你的https请求
这时候可以键盘输入“thisisunsafe“解决这个问题,Chrome和Edge浏览器实测可生效。参考:《你的连接不是专用连接怎么解决》