首页 >社区问答列表 >请问API接口网关怎么设计?

请问API接口网关怎么设计?

目前一个页面给前端提供了多个接口,但每个接口之间是独立的.不可能合并在一起.
前端想一次请求,获取到多个接口里的数据.因此想设计个网关.供前端使用.
功能是:传入多个请求接口.一次把每个接口里的数据组装个数组返回到前端.
目前的想法是在中间加个 node 层.
请求大家有什么指教吗?谢谢
ps:接口合并冗余,改动都很大~而且不利于扩展.因此目前抛弃了这种方式

  • 代言
  • 代言    2016-11-12 14:52:072楼

    合并接口数据需要考虑到一旦合并数据后数据量的问题。
    如果本身不需要考虑这种情况,那么可以直接在后端多开一个接口,直接返回前端想要的所有数据。这样就没必要在中间多加个node层了

    +0添加回复

  • 回复
  • 代言
  • 代言    2016-11-12 14:51:501楼

    是可以实现的, 并且对前端的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); // 对响应内容进行数据提取并回调 } });


    +0添加回复

  • 回复