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】是属于异常的,其它两个节点正常返回。
