一、名词解释
A机:请求发起方电脑,如:前端同学的电脑
B机:请求接收方电脑,如:后端同学的电脑
二、操作步骤
1、假设此时A机要跟B机联调B机的本地服务接口:https://api.beidai.com/gateway/route.html?method=beibei.finance.beidai.discover.get,B机确保自己能通过https://api.beidai.com/gateway/route.html?method=beibei.finance.beidai.discover.get访问到自己本机提供的服务;假设此时A机的IP地址为192.168.0.2,B机的IP地址为192.168.0.3,请确保A机能够ping通B机的IP。
2、双方各自打开自己的Charles,
3、B机打开Charles设置项Proxy > Proxy Settings,然后勾选Enable transparent HTTP proxying,此时B机的Charles监听的是默认的8888端口。
4、A机打开Charles设置项Tools > DNS Spoofing,新增一条记录将域名api-test.beidai.com(你也可以换一个你喜欢的)解析到192.168.0.103
5、A机打开Charles设置项Tools > Map Remote,新增一条记录将所有查询参数包含method=beibei.finance.beidai.discover.get的请求转发到http://api-test.beidai.com:8888,也就是把所有A机收到的请求都转发到B机的Charles上。
这里需要注意的是,上图中的Map To协议要选择http协议,因为如果你选了https,那么你还要安装B机的Charles证书才能把https请求转发过去,贼麻烦,所以索性就选http就好了。另外一点是一定要勾选Preserve host in header fields这个选项,否则你打到B机的请求就是http://api-test.beidai.com:8888而不是http://api.beidai.com了。
这一步你也可以视需求灵活处理,如果你想要把所有的api.beidai.com的请求都转发到B机上,那么你可以在上一步中直接将api.beidai.com解析到192.168.0.103即可,此时所有以http或https开头的api.beidai.com接口请求都会被转发到B机的Charles上。
6、全都配置好以后,A机接受到的method=beibei.finance.beidai.discover.get接口请求就都会被转发到B机上,B机第一次收到请求时会弹出“是否允许连接”的弹窗,此时毫无疑问要选择“是”,然后B机就应该能够收到A机转发过来的请求了,此时大家就可以愉快地联调了:)
三、写在最后
其实上面的步骤中有很多都可以灵活处理,只要我们明白了HTTP协议只是一堆纯文本发来发去,就可以善用Charles提供的各种强大功能来满足我们的需求了。过程中有任何问题,欢迎留言讨论。