当前位置: 首页 > Web前端 > HTML5

支持所有JavaScript运行时的HTTP网络库——Fly.js

时间:2023-04-05 10:53:28 HTML5

Fly.js的定位是Javascripthttp请求的终极解决方案,也就是说,在任何可以执行Javascript的环境中,只要具备接入网络的能力,Fly可以在其上运行,并提供统一的基于Promise的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请求varfly=require("flyio")//通过用户id获取信息,参数直接写在url中fly.get('/user?id=133')。then(function(response){console.log(response);}).catch(function(error){console.log(error);});//通过对象传递查询参数fly.get('/user',{id:133}).then(function(response){console.log(response);}).catch(function(error){console.log(error);});发起POST请求fly.post('/user',{name:'Doris',age:24phone:"18513222525"}).then(function(response){console.log(response);}).catch(函数(错误){console.log(错误);});发起多个并发请求[getUserRecords(),getUserProjects()]).then(fly.spread(function(records,projects){//两个请求都完成})).catch(function(error){console.log(error)}).......仅以上它是Fly.js的简单使用。除了支持Promise风格的API,Fly.js还支持:支持请求/响应拦截器自动转换JSON数据。浏览器端支持全局的ajax拦截。API支持打字稿。支持请求配置嵌入原生APP的H5页面,支持转发http请求到Native,支持直接图片请求。详细文档请参考githubfly。支持多平台原理Fly引入了HttpEngine的概念。所谓HttpEngine就是真正发起http请求的引擎。这在浏览器中一般是XMLHttpRequest,但是在其他JavaScript运行时下,需要提供相应平台的HttpEngine。Fly通过切换不同平台的HttpEngine,同时支持不同的JavaScript运行时。HttpEngine是一个标准的接口协议,在内部实现了真正的HTTP请求逻辑。不同的JavaScript运行时只需要实现HttpEngine的接口协议就可以无缝集成到Fly.js中。如何支持新的JavaScriptruntime上面提到,要支持新的JavaScriptruntime,我们需要在平台下实现HttpEngine,但是从头实现一个HttpEngine是非常复杂的。为此,Fly官方提供了一个EngineWrapper帮助工具,它可以通过一个适配器(adapter)生成一个完整的HttpEngine,所以我们只需要实现一个适配器即可。一个简单的例子varengine=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-HttpEngineRemoteHttpEngine我们说过在浏览器环境下,fly默认使用的引擎是XMLHttpRequest,现在我们来思考一下hybridAPP,如果一个引擎可以在Native(Android,IOS)上实现,然后fly在浏览器中使用,那么本来应该在浏览器也会被重定向到Native。。而这个在Native上实现的引擎,我们称之为remoteHttpEngine,因为调用者和执行者不在同一个环境。通过远程HttpEngine,Fly.js可以实现一个针对sky-requestRedirection的功能。可以将本应在浏览器发起的http请求重定向到Native,从而在Native上进行统一的请求管理、cookie同步、证书验证、缓存和访问控制。详见:Fly.js请求重定向。最后贴出Fly.js的Github源码地址:https://github.com/wendux/fly。详细文档请移步github。如果你喜欢Fly.js,欢迎star。