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

时间:2022-08-28 14:22:18

步骤


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:  设置接口返回
fiddler实现后端接口 mock(不需要修改开发代码)

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

step3:  设置成功后,直接访问接口即可

可能出现问题


1. 直接mock 接口返回值,js可能报错:No 'Access-Control-Allow-Origin'header is present on the requested resource
原因:在某域名下使用Ajax向另一个域名下的页面请求数据,会遇到跨域问题。另一个域名必须在response中添加 Access-Control-Allow-Origin 的header, 才能让前者成功拿到数据。 如:
fiddler实现后端接口 mock(不需要修改开发代码)

解决: fiddler 设置 response的header  设置内容 : Access-Control-Allow-Origin    *
fiddler实现后端接口 mock(不需要修改开发代码)
fidder 设置 http返回头的其他方法 参考:
http://mooring.iteye.com/blog/1705677


2.  返回值可能需要unicode编码(即,汉字编码后会变成诸如\u5a92\u5927\u5b66 类似的东西) 解决: 使用 unicode解码即可

unicode解码 工具:

http://www.alixixi.com/effect/read.asp?id=81144&c=168

http://tool.chinaz.com/tools/unicode.aspx

 

转化规则:

http://sentsin.com/web/120.html

http://www.cnblogs.com/skykang/archive/2011/05/30/2063176.html


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断点

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


方法二:url替换

以下是暂时性修改: urlreplace oldstr newstr //设置替换
urlreplace //取消替换


1)域名替换
urlreplace  www.baidu.com   127.0.0.1:8080
2) url中指定字符串进行替换 urlreplace a=1 a=2 3) 正则表达式 参考: http://www.mzwu.com/article.asp?id=3509

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);
}
永久性修改: 参考: http://my.oschina.net/leejun2005/blog/399108
修改CustomRules.js:
请先在CustomRules.js 找到:
 
  static function OnBeforeRequest ( oSession : Session ) {
   // ...
 }
在函式OnBeforeRequest 中加入:
 
  if ( oSession . HostnameIs ( 'www.demo.com' ) )
   oSession . hostname = 'www.dev.demo.com' ;