小程序网络库
promise + finally
网络错误自动重试 (可配置)
JavaScript兼容和TypeScript泛型支持
全局参数配置
CancelToken 可取消
底层队列维护
自定义请求拦截/响应拦截(全局和单个请求): 适配不同API的定义方式
全局事件监听: 方便统一记录处理各个时期或返回的log
axios 风格 API
文档: https://miniprogram-network.newfuture.cc/
miniprogram-network
小程序基础网络库,支持
Javascript
&TypeScript
Redefine the network API of Wechat MiniProgram.
GitHub: NewFuture/miniprogram-network
Main Packages 主要模块和功能
- miniprogram-network 小程序网路库合集
Request
fromminiprogram-request
Upload
fromminiprogram-uploader
Download
fromminiprogram-downloader
- miniprogram-request 小程序请求库
- [x] Promise支持+finally+泛型
- [x] CancelToken 取消支持
- [x] Queue 底层队列维护,支持插队
- [x] retry 网络错误重试
- [x] Interceptors 自定义请求/响应拦截
- [x] Listeners 事件监听
- [x] OnHeadersReceived 响应头回调
- [x] axios like API
- miniprogram-uploader 小程序上传库
- [x] Promise支持+finally+泛型
- [x] Cancelable 可取消
- [x] OnProgressUpdate 进度回调
- [x] OnHeadersReceived 响应头回调
- [x] Queue 底层队列维护,支持插队
- [x] retry 网络错误重试
- [x] Interceptors 自定义请求/响应拦截
- [x] Listeners 事件监听
- miniprogram-downloader 小程序下载库
- [x] Promise支持+finally+泛型
- [x] Cancelable 可取消
- [x] Queue 底层队列维护,支持插队
- [x] retry 网络错误重试
- [x] OnProgressUpdate 进度回调
- [x] OnHeadersReceived 响应头回调
- [x] Interceptors 自定义请求/响应拦截
- [x] Listeners 事件监听
- miniprogram-queue 小程序API队列封装
- [x] 可自动注入/手动管理
- [x] 支持取消操作(
abort
) - [x] OnProgressUpdate 进度回调
- [x] OnHeadersReceived 响应头回调
- [x] 支持插队
- miniprogram-fetch 小程序中使用Fetch API
- [x] 自动队列支持
miniprogram-promise 小程序异步API转Promise- [x] Finally Promise (支持finally)
- [x] cancelable/abort (可取消的Promise)
- miniprogram-network-life-cycle 网络操作流程和事件
Examples 示例代码
JavaScript
var Network = require('miniprogram-network');
// setConfig设置所有网络请求的全局默认配置,一次定义,所有文件中使用均生效
// 也可Network.Request.Defaults,Network.Download.Defaults,Network.Upload.Defaults 分别设置不同默认配置
Network.setConfig('baseURL','https://miniprogram-network.newfuture.cc/')
Network.get('index.html')
.then(res=>console.log(res))
.catch(console.error)
.finally(()=>{console.info('done')});
Network.patch('items/{id}',{dataKey:'dataValue'},{
params: {id:123456}, // 绑定参数
transformResponse: Network.transformRequestResponseOkData,// 响应2xx操作成功直接返回数据
}).then((item)=>console.log(item))
.catch(console.error);
Network.dowanload('network/','lcoalpath',{
onProgressUpdate:progressUpdateCallBack,// 进度回调
retry:3,// 重试3次
transformResponse: Network.transformDownloadResponseOkData, // 根据状态码只返回2xx对应的本地文件名
}).then(path=>console.log(path))
.catch(console.error);
TypeScript
注: TS开启完整的定义支持,依赖小程序官方定义 miniprogram-api-typings
import {setConfig,Request,Download,transformRequestResponseOkData,transformDownloadResponseOkData} from 'miniprogram-network';
// setConfig设置所有网络请求的全局默认配置,一次定义,所有文件中使用均生效
// 也可通过Request.Defaults,Download.Defaults,Upload.Defaults 分别设置不同默认配置
setConfig('baseURL','https://miniprogram-network.newfuture.cc/');
Request.get('index.html')
.then(res=>console.log(res))
.catch(console.error);
.finally(()=>{console.info('done')});
Request.patch<Item>('items/{id}',{dataKey:'dataValue'},{
params: {id:123456}, // 绑定参数
transformResponse:transformRequestResponseOkData, // 响应2xx操作成功直接返回数据
}).then((item:Item)=>console.log(item))
.catch(console.error);
Download.dowanload<string>('network/','lcoalpath',{
onProgressUpdate:progressUpdateCallBack,// 进度回调
retry:3,// 重试3次
transformResponse: transformDownloadResponseOkData, // 根据状态码只返回2xx对应的本地文件名
}).then((path:string)=>console.log(path))
.catch(console.error);
更多用法和配置参看miniprogram-request
,miniprogram-downloader
,miniprogram-uploader
网友回复
smater: