1.简介

宏哥之前一直用postman调接口比较多(web端),也非常容易上手和操作。但有时候想要去修改APP的页面展示,造数据又会比较麻烦,你自己造相对还好些,要是让开发造,还得低眉顺眼的去求人。通过今天的学习后,再也不担心这些烦心事。我们可以通过工具Charles就可以实现。可以用以下三种方法修改请求参数或修改响应:map(映射)、Breakpoints(打断点)、Rewrite(重写)。

2.修改请求参数或者响应数据的方法

根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:

Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。只能修改返回数据。
Rewrite 功能适合对网络请求进行一些正则替换。可修改请求数据和响应数据。
Breakpoints 功能适合做一些临时性的修改。在响应时间内,可修改请求数据和响应数据。

2.1MAP(映射)

Charles 的map功能,就是将某个请求进行重定向,然后用重定向后的内容来修改请求内容;map又分Map Remote和Map Local,顾名思义:Map Remote 是将指定的网络请求重定向到另一个网址,Map Local 是将指定的网络请求重定向到本地文件

2.2Rewrite(重写)

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

2.3Breakpoint(打断点)

上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。

3.修改请求内容

3.1方法一:直接选中修改

有些时候为了调试服务器的接口稳定性和容错性,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。具体操作步骤如下:

1.只需要在以往的网络请求上点击右键,选择 “Compose”,即可创建一个可编辑的网络请求。这里宏哥还是利用上一篇中的接口进行演示。如下图所示:

2.我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便,如下图所示:

3.将1801修改成1802,发送预期结果返回李四实际结果一样,如下图所示:

3.2Rewrite(重写)

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

1.例如,还是用之前API 请求是获得用户账户信息,而我当前的账户是 “张三”,如下图所示:

2.我们想试着直接修改请求参数,将 1801 换成成 1802。于是我们启用 Rewrite 功能,点击菜单栏tools-->Rewrite,如下图所示:

3.勾选“Enable Rewrite”,点击“Add”,然后设置如下的规则,如下图所示:

4.浏览器访问或者其他接口工具重新发送请求,预期结果返回李四与实际结果一样,如下图所示:

3.3Breakpoint(打断点)

上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的内容。

打断点修改请求的方法已经在上一篇文章中进行了详细的介绍,这里宏哥就不做赘述了。

需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。嘿嘿!这个就要考验你的手速了。

4.小结

宏哥这里总共介绍了三种设置修改请求参数的方式,一般工作中,我们要根据需要灵活变换方法,而不是一成不变的。好了,今天时间也不早了,讲解和分享就到这里!感谢您耐心的阅读~~

最新文章

  1. 开源一个silverlight上的文本编辑器:SlEditor
  2. java 学习笔记——网络(Socket)
  3. Java Web项目_部门内部留言板
  4. 使用swipecard实现卡片视图左右滑动监听以及点击监听
  5. jquery1.9+获取append后的动态元素
  6. openSUSE install failed
  7. 一个简单的脚本让你的ubuntu14.04记忆屏幕亮度
  8. mongodb windows下服务安装与卸载
  9. SyntaxError: Non-ASCII character '\xe2' in file 编码错误
  10. 翻书的效果:FMX.TSwipeTransitionEffect Animation
  11. 腾讯云数据库团队:MySQL AHI 实现解析
  12. Struts2基础学习(七)—值栈和OGNL
  13. 【详细资料】ICN6202:MIPI DSI转LVDS芯片简介
  14. fhs文件系统层级结构
  15. I/O模型简述
  16. Android ListPopupWindow的使用
  17. Oracle12c的安装
  18. 微信小程序内嵌网页的一些(最佳)实践
  19. babel (二) update to v7
  20. 三、安装MyCat-Web

热门文章

  1. Qt VideoMeeting_Intercom师生对讲开发中实际上遇到的一些问题,终于结项了,也照例写一下总结吧。
  2. webShell攻击及防御
  3. Navicat破解教程
  4. vue3项目,记录我是如何用1h实现产品预估1天工作量的界面需求
  5. AcWing1137. 选择最佳线路
  6. 浅谈 C++ 模板 & 泛化 (妈妈再也不用担心我不会用 std::sort 了)
  7. 对Asp.net WebApi中异步(async+await)接口实际使用及相关思考(示例给出了get,post,提交文件,异步接口等实践).
  8. SQL Server下7种“数据分页”方案,全网最全
  9. Linux基础操作-02
  10. [Codeforces Round #794 (Div. 2)] D. Linguistics