javascript-请问API接口网关怎么设计?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-请问API接口网关怎么设计?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2401字,纯文字阅读大概需要4分钟。
内容图文
![javascript-请问API接口网关怎么设计?](/upload/InfoBanner/zyjiaocheng/149/cc1fef356ec44293bc7f9f9c07c480f2.jpg)
前端想一次请求,获取到多个接口里的数据.因此想设计个网关.供前端使用.
功能是:传入多个请求接口.一次把每个接口里的数据组装个数组返回到前端.
目前的想法是在中间加个 node 层.
请求大家有什么指教吗?谢谢
ps:接口合并冗余,改动都很大~而且不利于扩展.因此目前抛弃了这种方式
回复内容:
目前一个页面给前端提供了多个接口,但每个接口之间是独立的.不可能合并在一起.
前端想一次请求,获取到多个接口里的数据.因此想设计个网关.供前端使用.
功能是:传入多个请求接口.一次把每个接口里的数据组装个数组返回到前端.
目前的想法是在中间加个 node 层.
请求大家有什么指教吗?谢谢
ps:接口合并冗余,改动都很大~而且不利于扩展.因此目前抛弃了这种方式
合并接口数据需要考虑到一旦合并数据后数据量
的问题。
如果本身不需要考虑这种情况,那么可以直接在后端多开一个接口,直接返回前端想要的所有数据。这样就没必要在中间多加个node层了
是可以实现的, 并且对前端的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'];
合并接口,把所有数据一次性给他??
内容总结
以上是互联网集市为您收集整理的javascript-请问API接口网关怎么设计?全部内容,希望文章能够帮你解决javascript-请问API接口网关怎么设计?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。