php实现api网关参数传递,请问API接口网关怎么设计?

是可以实现的, 并且对前端的ajax进行改装, 如改装jQuery的ajax

要实现的是前端自动合并, 逻辑是这样:

#1. 每当发起一个ajax请求时, 会暂存队列等待, 比如20ms

#2. 期间如果又发起了一个ajax请求, 该请求也会被放入队列, 等待下一个ajax()调用, 而20ms内没有ajax()调用, 则会拼接队列中的请求数据, 向服务端发起合并请求.

#3. 当然, 第一个ajax发起后, 会有个等待超时如80ms, 防止不停的等待, 第一个请求迟迟发不出

#4. GET和POST的队列分开

#5. 合并的请求数据结构, 如:

$.ajax({

url: "http://mydomain.com/ajax_package",

dataType:"text", // 数据类型为text, 需要分割解析, 把结果分配到指定请求回调

data:{

"actions":[ // 当然, 这个参数要json化, jQuery自动会urlencode

{

"callback": "pkg_callback_234244", // 创建回调handle

"url": "ajax1_url", // 请求1的url

"data": "ajax1_data" // 请求1的data

},

{

"callback": "pkg_callback_424234", // 创建回调handle

"url": "ajax2_url", // 请求2的url

"data": "ajax2_data" // 请求2的data

} // 更多合并的请求数据

]

},

success:function(res){

dispatch(res); // 对响应内容进行数据提取并回调

}

});

设定后台打包接口返回的数据规范,如:

>>>pkg_callback_234244

{"status":0, "error":null, "data":[1,2,3,4]}

<<<

>>>pkg_callback_424234

{"status":0, "error":null, "data":{"logined":true}}

<<<

也就是每个包的结构在这里定义为 >>>{callback}n{data}n<<<

callback是我们在队列处理时, 添加在jQuery对象上的, 如

jQuery.pkg_callback_424234 = {

success: fucntion(data){}, // 等于或封装了原ajax请求的success方法回调

error: function(err){}

}

提取到data, 和 callback, 就可以执行

jQuery.pkg_callback_424234.success.call(xhr, JSON.parse(data) );

// 移除回调

delete jQuery['pkg_callback_424234'];

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值