zoukankan      html  css  js  c++  java
  • 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编码(即,汉字编码后会变成诸如u5a92u5927u5b66 类似的东西)
    解决: 使用 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' ;
  • 相关阅读:
    pymysql
    Mysql
    协程
    线程池
    线程 条件
    线程 事件
    线程
    requests
    Linux 时区不对的解决办法
    Linux 简单命令
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/7884360.html
Copyright © 2011-2022 走看看