fiddler实现后端接口 mock(不需要修改开发代码)

转载:http://blog.csdn.net/huazhongkejidaxuezpp/article/details/50435552

步骤

 
1.  获取 接口 定义(接口返回的json串)
 
2.  json串放入本地txt文件中
例如, test.txt:
{"retCode": "200","Msg": "ok","retSign": "1323243","retTime": " 2324523232 ","totalCount": "13","data": []}
 
3.  fiddler拦截接口,另返回值取自test.txt中的内容
 
step1: 接口拖入AutoResponder窗口
 
step2:  设置接口返回
 
 
 
step3:  设置成功后,直接访问接口即可
 
 

可能出现问题

 
1. 直接mock 接口返回值,js可能报错:No 'Access-Control-Allow-Origin'header is present on the requested resource
 
原因:在某域名下使用Ajax向另一个域名下的页面请求数据,会遇到跨域问题。另一个域名必须在response中添加 Access-Control-Allow-Origin 的header,
才能让前者成功拿到数据。
如:
 
 
解决: fiddler 设置 response的header 
设置内容 : Access-Control-Allow-Origin    *
 
fidder 设置 http返回头的其他方法 参考:
 
 
 
2.  返回值可能需要unicode编码(即,汉字编码后会变成诸如\u5a92\u5927\u5b66 类似的东西)
解决: 使用 unicode解码即可
 

unicode解码 工具:

3.  当A接口的reponse header :
Access-Control-Allow-Origin: http://XXX 
Access-Control-Allow-Credentials: true
 
B接口的
reponse header :
Access-Control-Allow-Origin: http://XXX 
如果要mock B接口 , fiddler的filter必须精确设置为Access-Control-Allow-Origin: http://XXX 

mock接口的其他方法

前提: 可以修改代码中接口的地址
 
方法: 可以使用mock.js,wiremock等 写代码/json配置方式mock接口
 
 

fiddler 修改request(请求数据)

 

方法一: bpu断点

 
 

方法二:url替换

以下是暂时性修改:
urlreplace oldstr newstr //设置替换
urlreplace //取消替换
 
 
1)域名替换
 
urlreplace  www.baidu.com   127.0.0.1:8080
 
2) url中指定字符串进行替换
urlreplace a=1 a=2
3) 正则表达式
参考:
 
urlreplace不支持正则替换,如需用正则,可打开FiddlerScript,在OnBeforeRequest中方法中找到下边代码:
复制内容到剪贴板 程序代码
if ((null != gs_ReplaceToken) && (oSession.url.indexOf(gs_ReplaceToken)>-1)) {   // Case sensitive
    oSession.url = oSession.url.Replace(gs_ReplaceToken, gs_ReplaceTokenWith); 
}
替换为:
复制内容到剪贴板 程序代码
if ((null != gs_ReplaceToken) && (System.Text.RegularExpressions.Regex.IsMatch(oSession.url, gs_ReplaceToken))) {   // Case sensitive
    oSession.url = System.Text.RegularExpressions.Regex.Replace(oSession.url, gs_ReplaceToken, gs_ReplaceTokenWith);
}
永久性修改:
参考:
修改CustomRules.js:
请先在CustomRules.js 找到:
 
  static function OnBeforeRequest ( oSession : Session ) {
   // ...
 }
在函式OnBeforeRequest 中加入:
 
  if ( oSession . HostnameIs ( 'www.demo.com' ) )
   oSession . hostname = 'www.dev.demo.com' ;
posted @ 2017-11-23 12:58  小学生II  阅读(1216)  评论(0编辑  收藏  举报