摘要:已支持的平臺官方支持的運行時包括瀏覽器微信小程序。瀏覽器端支持全局攔截。支持請求配置頁面內嵌到原生中時,支持將請求轉發到,支持直接請求圖片。
Fly.js 的定位是成為 Javascript http請求的終極解決方案,也就是說,在任何能夠執行 Javascript 的環境,只要具有訪問網絡的能力,Fly都能運行在其上,并提供統一的Promise based API。
Github: https://github.com/wendux/fly
已支持的平臺Fly.js 官方支持的Javascript運行時包括:瀏覽器、node、微信小程序。這意味著你可以在這些平臺使用同一份代碼來發起http請求。值得一提是集成到web應用時(瀏覽器環境), fly.js的大小只有4.7KB, 非常輕量。
統一的用戶層APIFly.js 支持的JavaScript運行時是不同的,但提供的用戶層API是統一的,API是基于Promise的,風格和 axios 很像(但不完全相同),下面看幾個例子:
發起GET請求var fly=require("flyio") //通過用戶id獲取信息,參數直接寫在url中 fly.get("/user?id=133") .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }); //query參數通過對象傳遞 fly.get("/user", { id: 133 }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });發起POST請求
fly.post("/user", { name: "Doris", age: 24 phone:"18513222525" }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });發起多個并發請求
function getUserRecords() { return fly.get("/user/133/records"); } function getUserProjects() { return fly.get("/user/133/projects"); } fly.all([getUserRecords(), getUserProjects()]) .then(fly.spread(function (records, projects) { //兩個請求都完成 })) .catch(function(error){ console.log(error) })
…….
上面只是Fly.js的簡單使用,Fly.js 除了支持Promise風格的API之外,另外還支持:
支持請求/響應攔截器。
自動轉換 JSON 數據。
瀏覽器端支持全局Ajax攔截。
API支持typeScript。
支持請求配置
H5頁面內嵌到原生 APP 中時,支持將 http 請求轉發到 Native,支持直接請求圖片。
詳細的文檔請參考 github fly .
支持多平臺的原理Fly 引入了Http Engine 的概念,所謂 Http Engine,就是真正發起 http 請求的引擎,這在瀏覽器中一般都是XMLHttpRequest,而在其它JavaScript運行時下,需要提供相應平臺的Http Engine,Fly 正是通過切換不同平臺的 Http Engine 而實現同時支持不同JavaScript運行時的 。
Http Engine 是一個標準的接口協議,內部實現了真正的HTTP請求邏輯,不同JavaScript運行時只需要實現Http Engine的接口協議,就可以無縫集成到Fly.js中。
如何支持新的JavaScript運行時如上所述,要支持新的JavaScript運行時時,我們需要實現該平臺下的Http Engine即可,但是從頭實現一個Http Engine 是非常復雜的,為此,Fly 官方提供了一個 EngineWrapper 幫助工具,它可以通過一個adapter(適配器)生成一個完整的 Http Engine,所以,我們只需要實現一個adapter就行。
一個簡單的例子var engine= EngineWrapper(function (request,responseCallback) { responseCallback({ statusCode:200, responseText:"你變或者不變,我都不變?。", extraFeild:"自定義字段" }) }) fly.engine=engine; fly.get("../package.json").then(d=>{ log(d.data) log(d.extraFeild) }) 控制臺輸出 > 你變或者不變,我都不變?。 > 自定義字段
EngineWrapper的參數就是adapter, 在這個例子中,adapter 并沒有真正發起 http 請求,而是直接返回了固定內容,這樣 fly 上層請求任何接口收到的內容永遠都是相同的。完整的示例請移步:Fly.js-Http Engine .
遠程Http Engine我們說過,在瀏覽器環境中,fly 使用的默認engine 就是 XMLHttpRequest。現在我們想想混合APP, 如果能在 Native(Android、IOS) 上實現一個engine,然后供瀏覽器中的 fly 使用,那么也就會將原本應該在瀏覽器中發起的請求重定向到了 Native 上。而這個在 Native 上實現的 engine,我們稱其為遠程 Http Engine,這是因為調用者和執行者并不在同一個環境。
通過遠程Http Engine, Fly.js可以實現一個逆天的功能--請求重定向。它可以將本來會在瀏覽器中發起的http請求重定向到Native, 這樣就可以在Native 上進行統一的請求管理、cookie同步、證書檢驗、緩存和訪問控制等,詳細的內容請參考: Fly.js 請求重定向 。
最后貼出Fly.js的Github源碼地址:https://github.com/wendux/fly , 詳細的文檔請移步github, 如果你喜歡Fly.js,歡迎star.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92961.html
摘要:上一篇文章介紹了在快應用中使用,本文主要介紹一下如何在微信小程序中使用。下面我們看看在微信小程序中和中如何使用微信小程序微信小程序采用開發技術棧,使用語言開發,但是運行時和瀏覽器又有所不同,導致等庫無法在微信小程序中使用,而可以。 Fly.js 一個基于Promise的、強大的、支持多種JavaScript運行時的http請求庫. 有了它,您可以使用一份http請求代碼在瀏覽器、微信...
摘要:支持請求響應攔截器。定位與目標的定位是成為請求的終極解決方案。攔截器支持請求響應攔截器,可以通過它在請求發起之前和收到響應數據之后做一些預處理。 Fly.js 是一個功能強大的輕量級的javascript http請求庫,同時支持瀏覽器和node環境,通過適配器,它可以運行在任何具有網絡能力的javascript運行環境;同時fly.js有一些高級的玩法如全局ajax攔截、在web a...
摘要:本文將帶你了解不同請求的原理,以及如何為項目選擇合適的請求庫。小程序年微信小程序上線,隨后各大平臺都推出自己的小程序。下面為目前較火的請求庫。支持微信小程序和瀏覽器是一個基于的請求庫,可以用在微信小程序和瀏覽器中,對上述平臺都做了兼容。 以前前端提到網絡請求通常是指瀏覽器,但現在隨著 Node.js、小程序的出現,網絡請求不再局限于瀏覽器。本文將帶你了解不同請求的原理,以及如何為項目選...
閱讀 3407·2021-11-25 09:43
閱讀 2294·2021-09-06 15:02
閱讀 3538·2021-08-18 10:21
閱讀 3341·2019-08-30 15:55
閱讀 2344·2019-08-29 17:06
閱讀 3534·2019-08-29 16:59
閱讀 962·2019-08-29 13:47
閱讀 2756·2019-08-26 13:24