1、解决问题
在前端一个页面上会存在调用多个接口的返回数据,常规有以下几种做法:
1)同步调用每个接口并等待返回数据(一般H5、小程序用法)
2)并发调用每个接口(一般APP用法)
3)多个接口一起提交给服务器,服务器一次性返回数据
本批量batch接口是指使用第3种情况
2、使用方法
本例使用三个接口,每个接口都自有独立参数,同时传入公共参数,供后端使用。
同时,此三个接口,是可以单独使用的,与批量调用没有影响。
固定接口地址是:/api/v1/batch/post (仅支持内部是GET方式的接口)
H5前端JS例子(小程序、APP同理)
//声明批量接口参数
let data = {
args: {pid: xxxx}, //公共参数
apis: [
{name: 'bidHots', api: '/api/v1/bid/hot', arg: {day: 7, size: 5}},
{name: 'advertList', api: '/api/v1/cms/advert/list', arg: {pos: 2200}},
{name: 'modelHots', api: '/api/v1/qto/model/hot', arg: {size: 5}},
]
};
//调用批量接口,异步返回数据
http_post('/api/v1/batch/post', data, function (res) {
that.bidHots = res.bidHots;
that.advertList = res.advertList;
that.modelHots = res.modelHots;
});
传入参数
参数名 | 说明 | 样例 |
---|---|---|
args | 公共参数,会传递每个接口上 | |
apis | 接口参数,至少要求2个 | |
├ name | 接口别名,本地自定义,驼峰命令方式 | |
├ api | 接口地址,与原来地址一样 | |
└ arg | 接口参数,原来接口所需要的参数 |
获取返回数据
1)返回JSON数据结构,以接口别名为KEY值返回。
2)需要在本地代码自行提取对应数据
3、发生异常
每个接口的异常单独返回,不影响其它接口调用。如下样例:
{
"bidHots": {
"status": 200,
"data": []
},
"advertList": {
"status": 1001,
"msg": "error message"
},
"modelHots": {
"status": 200,
"data": [{
"mid": 10001,
"mname": "iPhone 3GS"
}, {
"mid": 10002,
"mname": "iPhone 4"
}, {
"mid": 10003,
"mname": "iPhone 4s"
}, {
"mid": 10004,
"mname": "iPhone 5"
}, {
"mid": 10006,
"mname": "iPhone 5s"
}]
}
}
上述例子中的节点【advertList】是属于异常的,其它两个节点正常返回。