【2016.01.18】通过Fiddler工具进行接口代理 - 用本地接口代理线上接口运行

Fiddler是抓取请求的工具的一种,类似的还有Charles等,使用Fidder之前应先关闭其他的代理工具

需求如下:

网站前端和服务端配合开发了一个页面,会调取接口A的数据并在页面上呈现,现在由于业务要求需要开发新的接口B,在原有的前端逻辑下正常展示。那么,在开发的过程中,在没有前端配合的情况下,服务端如何让这个页面调取B的接口并呈现呢?

解决方案是这样:

以去哪儿的某款产品为例:http://szgq1.package.qunar.com/user/id=187688454&abt=a#tf=tejiaqunar

用chrome打开该链接,打开开发者工具,依次选择Network - XHR可以看到页面调用的服务端的接口列表

(如图所示,右侧为该页面调用的接口)

以getBottomRecommend接口为例,

右击该接口地址并在新的页面中打开,会显示该接口的出入参。

接口的请求:http://szgq1.package.qunar.com/user/recommend/getBottomRecommend.json?pId=187688454

入参是产品id:pId=187688454

出参是推荐的产品的list数组:

出参的显示结果如下图所示:

假设,我们本地开发了一个新的产品推荐接口,接口地址为user/recommend/newGetBottomRecommend.json

在网站前端修改接口地址并上线之前(有时候,情况更加复杂,我们进行的app服务端的开发,为app的某个页面提供接口,在app修改接口地址并打包给我们之前,我们只能通过观察数据的结构来想象展示的效果,而一般情况下pc或M站上是有这样的页面提供给我们测试使用的),我们本地开发的时候需要在原有的界面显示新接口返回的数据

打开Fiddler软件,刷新刚才的产品详情页,此时在fiddler窗口中会抓取所有的请求

A区域中显示了页面在刷新后发起的所有的请求,我们在其中找到我们要修改的请求

1、在右侧的区域里选择AutoResponder添加代理

2、勾选这三项

3、Add rule添加代理

4、在4中输入原有的接口地址  http://szgq1.package.qunar.com/user/recommend/getBottomRecommend.json?pId=187688454

5、在5中输入现在代理的接口地址,我们先选择自带的404_Plain.dat试一试,理论上调用这一接口会报404错误(查找不到文件)

6、保存操作,刷新接口请求发现接口返回值是

此时,页面中产品推荐模块的展示结果为:

可见,此时,该模块对应的线上接口调的是我们代理的404的新接口。

7、我们也可以用json文件来代替接口的请求,比如我们将原有的json文件复制下来,进行修改

{"ret":true,"data":{"group":[{"min_price":0,"count":1024,"short_arr":"我家+","arr":"日本,大阪,京都","departure":"博客园","takeoff_date":"今天","url":"/search/group-a-a-%E4%B8%8A%E6%B5%B7-----%E6%97%A5%E6%9C%AC-4812----20160127-10758"}]}}

保存为newReturn.json,并在新接口请求的位置选择这个文件

此时,接口的请求结果为我们输入的内容:

页面的显示结果为:

希望对您有所帮助。

时间: 2024-12-16 02:16:31

【2016.01.18】通过Fiddler工具进行接口代理 - 用本地接口代理线上接口运行的相关文章

2016.01.18 UILabel

如何在工程中导入字体 1.将下载的字体导入文件 2.到plist文件添加字体 3.如果在导入的时候没有选择添加到工程,那么需要在project->Build Phases->copyBundleResources里面添加导入的字体. 4.在mac里面打开字体,显示的标题就是对应的字体名称 根据内容自动确定UILabel显示的大小: 1.确定一个容器的size a.width或者height一方固定 b.变化的变量要足够大 eg:(300, 2000) (这里值得一提的是,如果范围给的不够大,则

2016.01.18-2016.01.21盲审通关修改

请以上同学在1月21日(星期四)之前将以下材料交到研究生科: 1.装订好的硕士学位论文3本(注意:封面上作者姓名和指导教师隐去.致谢隐去.硕士学位期间发表的全部的论文作者隐去): 2.普通信封上写明评阅费:200元.邮寄费:22元,并将相应的钱款分别装入以上三个信封(普通信封,一共:200*3+22*3元): 3.从研究生管理信息系统中导出的“论文评阅书”封面上的作者姓名和指导教师姓名隐去:交三份“论文评阅书”和三份“学位论文评阅聘书”. 4.交三份“EMS”信封和一个装有20×3=60元邮寄费

为什么用C++写库 但是导出接口时 却定义了C的接口(李大哥告诉我的,我还没有理解,先记着吧。为以后查询方便,哈哈)

导出C接口 使其拥有使用范围最广的接口 和多方式支持.比如操作系统,用C++写,但是接口申明了#ifdef C plus plus,判断如果是C++代码 就导出C接口,windows 下微软的几乎所有接口都是这样导出的,linux也一样.举例说明,我们导出一个C++接口 接口函数如下:KERNEL_USER_API int UserLogin(LPCTSTR lpszUserName,LPCTSTR lpszPassword);   假设这是一个内核库 封装了所有方法   然后提供给界面程序调用

[官方软件] Easy Sysprep v4.3.29.602 【系统封装部署利器】(2016.01.22)--skyfree大神

[官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&tid=362766&highlight=Easy%2BSysprep [官方软件] Easy Sysprep v4.3.29.602 [系统封装部署利器](2016.01.22) [Easy Sysprep]概述:Easy Sy

Delcam.Exchange.2016.Win32_64 1CDCAD图形浏览工具

Delcam.Exchange.2016.Win32_64 1CDCAD图形浏览工具Delcam Exchange 支持导入多种软件上的文件格式(如DMT.Elite.footCAD.GPSCAN HICAD IDEAS IGES Inventor iTero Orthema Parasolid parasolid Paromed Part PDF Pro/Engineer Procera Rhino Schott Sirona等),并输出其它同类文件格式.功能非常强大.Delcam Excha

2016.11.18多态

下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; 结论: java中基类对象不能当做子类对象使用,需要用强制转换来实现,子类对象变量=(子类名)基类对象名:错误的代码是d=m; d=c; 1.   左边的程序运行结果是什么?2.   你如何解释会得到这样的输出?3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪些语法特性? 运行结果截图: pu

fiddler 工具使用配置

前言: 之前为了手动测试项目组之间提供的接口,确定到底是哪一个接口出了问题.一般情况下,我们都直接采用了 Google 浏览器上,F12 后,Network 找到想要的 URL,然后,直接在浏览器上访问该接口.但是对于一个新接口,尤其是它还是一个post接口,或者参数较多的时候,写起来也是颇多繁琐.总是,我们一个在尝试使用新的工具之中. 本来火狐浏览器提供的 Requester 插件,干净简洁,但是 依赖于火狐浏览器,火狐更新之后,也是烦躁. 当然还有一些别的工具,但是总是变来变去,或者显得不够

2016.01工作日志

2016.01.01 元旦在家,八点醒,开始继续阅读「30日でできる!OS自作入門」.主要目的,加深对os和cpu的理解.另外花些时间又重温王爽的<汇编语言>.今天,最大收获还是感官上体会系统底层:比如往内存xxxx里写入0或者1就可以实现操作系统对xxxx部件的控制.另外,看到了「30日でできる!OS自作入門」中自制操作系统的内存图,就可以知道,内存这种东西,就是操作系统,或者cpu规划的.内存本身是不分段的.内存的哪一段是ram哪一段是bios显卡,改变其地址值就可以实现特定效果. 对于这

WebApi学习笔记03:使用webapi模板--API帮助--fiddler工具使用--增删改查方法

1.Web项目 1.1概述 前面两个例子,使用的空web模板,它没有引入关于UI框架(Bootstrap,追求代码洁癖的人,也许不会喜欢它),更没有安装API帮助, 这次我们直接选webapi模板项目,但不勾选身份验证…… 1.2创建项目 注:关于身份验证,后面单独例子再说. 这样创建的项目,直接是demo了,可以运行了.(就不截图了) 1.3修改控制器 打开Controllers\ValuesController.cs,修改为: using System.Collections.Generic