mock解决第三方接口依赖问题

mock除了用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口
此时服务端没开发完成,或者说没搭建测试环境,这个时候前端开发会自己mock一个api服务端,自己给自己提供调用接口的返回数据
mock-server用途就是开发在开发的过程中,需要依赖一部分的接口,但是对方没有提供或者环境等等情况

具体使用方法参考官方文档:https://github.com/dreamhead/moco

0.moco下载链接:

https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.12.0/

1.第三方代理实现截获请求的方法介绍

https://blog.csdn.net/qq_35716699/article/details/90581880

2.mock实现过程

https://blog.csdn.net/w13632910369/article/details/106350435/

https://www.cnblogs.com/luffa/p/10389151.html

https://blog.csdn.net/vite_s/article/details/54583243

https://www.cnblogs.com/Teachertao/p/10556139.html

 

启动moco

moco项目是采用java开发的,所以启动moco前,需要安装jdk。未安装请先安装

把我们下载下来的moco的jar包和刚刚编辑好的json文件放到同一个文件夹路径下

然后在该路径下打开cmd命令行

输入命令

java -jar moco-runner-0.12.0-standalone.jar http -p 9090-c test.json

其中

  • jar包的名称可根据自己下载的jar包版本来写

  • http代表这个模拟的是http请求

  • -p 9090 定义是端口号

  • -c test.json 是我们编辑的那个json文件名。

-------------------------------持更----------------------------------

最近在项目中mock了一个下游接口,想通过修改微服务接口来进行直接调用,当使用的接口是http://127.0.0.1/xxx,结果由于微服务屏蔽了localhost,导致接口掉不同,然后就想如何将这个接口改成本机ip,开始看官方文档和各种博客,都是127的ip,今天问了一个小姐姐,和我说直接改成本机ip就可以了,很简单的,我当时就懵逼了,怎么改,在哪里改????????也主要源于我不知道localhost、127.0.0.1和本机ip的关系https://zhidao.baidu.com/question/1176120779058268299.html

其实调用的时候,直接将本机ip替换localhost就可以了,但其实这种方式我试过,可能当初cmd跟新的也快,都没有注意到确实有调用,我此刻的心情并没有很开心,觉得好傻呀。。。。。但是这也激励我不断找各种途径,moco官方文档看了两遍,正在琢磨用Django实现mock,也算一种收获,希望遇到的朋友看到这篇文章,都有所收获

--------------------------------新的问题总结2-------------------------------

需求:通过后端接口返回字段个数,对比这些字段与数据库中已有字段的权重,然后通过权重比较,给前端返回权重最高的字段,前端给出相应的提示

mock此接口的过程,日志一直报错,错误如图:

后端开发说,我mock接口返回的编码格式是gbk,而我们微服务只接受utf-8---------如何查看自己返回的编码格式,放到postman中,用控制台查看响应头即可

然后再响应代码添加了响应头信息,如图

最后,mock接口的逻辑,要根据业务场景来写相应的代码,切记切记!!!

 

---------------------------------------------------------持更--------------------------------------------------------------

response中带有中文时,存在中文乱码问题,解决方式:

注意:response中返回的是json文件,json中带有中文时,postman调用接口返回响应和cmd窗口中,中文都可以正常显示;

 重点》》若response返回的中文标签是text文本格式,cmd中中文可以正常显示,但是postman调用接口时,返回中文是乱码的,,,如何解决????

 

1、moco微服务接口时,解决方式:1)response添加headers》》》》"headers":{
"Content-Type":"text/html;charset=gbk"
}

{"description":"这是第二个moco操作,模拟返回值为中文",
    "request":{
      "uri":"/demotwo"
    },
    "response":{
      "text":"这是第二个demo",
      "headers":{
        "Content-Type":"text/html;charset=gbk"
      }

    }

  }

2、cmd窗口启动服务时添加特定编码格式:

java -Dfile.encoding=UTF-8 -jar ./moco.jar http -p 8888 -c test.json

上述操作的话,postman乱码解决了,但是cmd中返回的确是乱码的,但是没有大影响

--------------------------------------------------------------------------------------请求参数中有中文--------------------------------------------------------

1、请求参数为form表单参数中存在中文时,java -Dfile.encoding=UTF-8 -jar ./moco.jar http -p 8888 -c test.json,可以解决乱码问题,postman可以调通接口

[
  {
    "description":"模拟中文",
    "request":{
      "uri":"/test",
      "method":"get",
        "forms":{
            "name":"fcy",
            "sex":"女"
        }
    },
    "response":{
      "text":"这是第一个demo"
    }
  }
]

2、请求参数为json格式,且存在中文时,cmd窗口中文乱码,报错400,当然,postman也无法调通

  若通过moco形式,目前还误解,还在查询中?????????????

 若通过django即可实现,django忽略请求,直接mock返回,即可实现

---------------------------------------------------------------------------------忽略请求,直接mock返回,实现无论请求参数为设么参数,都有一个返回结果-------------------

Django框架直接mock接口返回----已经验证,但是放到微服务中,如果后端接口为异步接口时,存在超时问题

Flask框架mock接口返回

 

 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值