1、解决问题

在前端一个页面上会存在调用多个接口的返回数据,常规有以下几种做法:

1)同步调用每个接口并等待返回数据(一般H5、小程序用法)
2)并发调用每个接口(一般APP用法)
3)多个接口一起提交给服务器,服务器一次性返回数据

本批量batch接口是指使用第3种情况

2、使用方法

本例使用三个接口,每个接口都自有独立参数,同时传入公共参数,供后端使用。
同时,此三个接口,是可以单独使用的,与批量调用没有影响。
固定接口地址是:/api/v1/batch/post (仅支持内部是GET方式的接口)

H5前端JS例子(小程序、APP同理)

  1. //声明批量接口参数
  2. let data = {
  3. args: {pid: xxxx}, //公共参数
  4. apis: [
  5. {name: 'bidHots', api: '/api/v1/bid/hot', arg: {day: 7, size: 5}},
  6. {name: 'advertList', api: '/api/v1/cms/advert/list', arg: {pos: 2200}},
  7. {name: 'modelHots', api: '/api/v1/qto/model/hot', arg: {size: 5}},
  8. ]
  9. };
  10. //调用批量接口,异步返回数据
  11. http_post('/api/v1/batch/post', data, function (res) {
  12. that.bidHots = res.bidHots;
  13. that.advertList = res.advertList;
  14. that.modelHots = res.modelHots;
  15. });

传入参数

参数名 说明 样例
args 公共参数,会传递每个接口上
apis 接口参数,至少要求2个
├ name 接口别名,本地自定义,驼峰命令方式
├ api 接口地址,与原来地址一样
└ arg 接口参数,原来接口所需要的参数

获取返回数据
1)返回JSON数据结构,以接口别名为KEY值返回。
2)需要在本地代码自行提取对应数据

3、发生异常

每个接口的异常单独返回,不影响其它接口调用。如下样例:

  1. {
  2. "bidHots": {
  3. "status": 200,
  4. "data": []
  5. },
  6. "advertList": {
  7. "status": 1001,
  8. "msg": "error message"
  9. },
  10. "modelHots": {
  11. "status": 200,
  12. "data": [{
  13. "mid": 10001,
  14. "mname": "iPhone 3GS"
  15. }, {
  16. "mid": 10002,
  17. "mname": "iPhone 4"
  18. }, {
  19. "mid": 10003,
  20. "mname": "iPhone 4s"
  21. }, {
  22. "mid": 10004,
  23. "mname": "iPhone 5"
  24. }, {
  25. "mid": 10006,
  26. "mname": "iPhone 5s"
  27. }]
  28. }
  29. }

上述例子中的节点【advertList】是属于异常的,其它两个节点正常返回。