yapi中mock jsonp接口响应的方法

作者 : 开心源码 本文共979个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共225人阅读

1. 问题

yapi具备强大的mock能力,但是它能否可以mock jsonp请求呢?

2. 尝试

2.1 yapi端的准备

普通的json schema和期望方式,都只能返回json,无法在返回中添加callback函数名。我们尝试使用“高级mock”中的“脚本”完成这个功能。如下图所示,注意“能否开启”的部分肯定要打开。

image

Mock脚本如下:

var cb = params.callback;if (!cb){    cb = 'callback';}var a = [0,1,2,3,4,5]var json = {    "data":a.map(function(){        return {            name:Random.pick('x', 'b', 'e', 'm'),            age:Random.pick(1,2,3,4),            url:Random.url('http', '123.sogou.com'),            time:Random.timestamp()        };    })    }var res = JSON.stringify(json);mockJson = cb + '(' + res + ')';

说明:

  • 假设jsonp的回调函数名用callback参数指定
  • yapi脚本中定义了少量全局变量。parmas允许你获得请求参数。更多全局变量参见这里。
  • mockJson是返回数据。
  • 我们取巧的先生成json, 而后将json转成字串赋,拼接callback后赋给mockJson。

2.2 发起jsonp请求

http://mybusiness.qqpy.sogou.com/jsonp.html
对应代码如下:

this is a jsonp demo<script src="http://kan.sogou.com/js7/jquery.min.js"></script><script>$.ajax({    url:'http://dhyapi.sogou/mock/53/jsonpdemo/',    dataType:"jsonp",    jsonp:"callback",     success:function(data){        console.log(data);    }})</script>

在浏览器上打开页面,看到如下结果:

image

这说明我们的尝试成功了。

3. 不足

mock数据时只能使用Random系列方法(占位符),无法使用模板。因而可以看到2.1中的代码为了mock数组,使用了比较trick的方法。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » yapi中mock jsonp接口响应的方法

发表回复