javascript - 請問API介面網關怎麼設計?

來源:互聯網
上載者:User
目前一個頁面給前端提供了多個介面,但每個介面之間是獨立的.不可能合并在一起.
前端想一次請求,擷取到多個介面裡的資料.因此想設計個網關.供前端使用.
功能是:傳入多個請求介面.一次把每個介面裡的資料群組裝個數組返回到前端.
目前的想法是在中間加個 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'];

合并介面,把所有資料一次性給他??

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.