忽略掉细节,一个webAPP访问服务器的大概流程就是这个样子:
当手机打开一个网页的时候,应用会向服务器发起一个请求。然后服务器处理完这个请求,相应的,也会将结果返回给浏览器。
这个流程虽然简洁明了,但是对于开发者来说,却还是太复杂了。
比如我现在修复一个紧急的BUG,我需要立马推送服务器,那么我应该做好以下这个步骤:
1、 手机APP更新地址为局域网的机子
2、 本地服务器测试BUG
3、 将本地修复好的代码推上服务器
4、 再重新将手机APP的地址更新为服务器的地址
5、 验证BUG是否解决了没有
在这里步骤中,我们可以将线上请求转化为线下请求。
解决的痛点:
1、 APP无需重新更新
2、 本地直接可以测试,等测试代码通常再推送到服务器
要实现这样的功能,我们需要把服务器地址重定向为我们本机的地址:
只要将手机连接上WIFI,然后设置其代理的IP地址即可。
有同学问,修改hosts不是也可以吗?
在本机解析一个DNS的流程通常是缓存DNS,hosts中的,然后才是DNS服务器的。
但是这个hosts只针对电脑本身有用,而对于手机连接上WIFI是没有用的。
当然,如果是修改手机的hosts也是可以用的。
本方法不仅适用于webAPP开发,对于原生的的APP,也是支持的。
不过如果这样子虽然将服务器地址重定位到我们本地的服务器,但是如果我们本地服务器有多个项目的话,这个时候便可以使用apache的虚拟目录了。
Listen 8888
NameVirtualHost *:8888
<VirtualHost *:8888>
ServerAdmin webmaster@test.com
DocumentRoot E:/www/xxx/
ServerName 127.0.0.1
</VirtualHost>
上面这行代码,复制到httpd.conf最下面,然后重启下apache。那么apache就会再监视8888这个端口。
这个时候,设置代理服务器的地址为我们本地服务器的地址,端口为8888,这样子就可以进行线下调试了,并且还不会干扰到我们本地服务器其他项目的运行了。