Napoleon's Pixelated Mugshot

    miniprogram-network
    TypeScript icon, indicating that this package has built-in type declarations

    4.5.2 • Public • Published

    miniprogram-network npm version

    A Network package for MiniProgram

    小程序底层网络库封装

    Integration

    网络库封装

    • Promise泛型Promise
    • CancelToken 可取消操作
    • Queue 队列支持(可插队)
    • Retry 网络错误自动重试
    • Cache 底层缓存支持(包括并发请求合并)
    • Timeout 自定义超时时间
    • 每个请求的原生回调接口支持(onHeadersReceived事件)和(onProgressUpdate事件)
    • Interceptors 拦截器 transform send data / transform response data
    • Listeners 全局事件监听onSend,onResponse,onRejected,onAbort,onComplete
    • 支持全局配置和每个请求单独配置

    安装

    npm i miniprogram-network
    
    import {post} from 'miniprogram-network';
    post('xxx',data).then(console.log)

    配置

    通用配置

    • headers 请求头
    • params URL替换参数
    • baseURL 根URL
    • retry 重试次数
    • timestamp 是否记录发送和响应时间戳
    • transformSend 输入转换函数(Request,Download,Upload需分别设置)
    • transformResponse 输出转换函数 (Request,Download,Upload需分别设置)

    不同网络请求单独配置项

    缓存配置

    全局缓存策略 cacheConfig

    • cacheConfig.expire 缓存时间单位ms 默认 10分钟
    • cacheConfig.excludeMethod string[] 不缓存的操作,默认['POST', 'PUT', 'DELETE', 'TRACE', 'CONNECT']
    • cacheConfig.resultCondition结果缓存条件,默认isOkResult(2xx)
    • cacheConfig.keyBuilder 缓存key生成规则,修改后excludeMethod将失效

    单个请求设置缓存

    • expire 缓存时间单位ms 默认 使用全局配置

    transform 数据转换

    默认的transformResponse直接返回小程序原始的返回数据{statusCode,...}

    同时提供了根据状态码返回对应数据的转换方式

    import {
        REQUEST, transformRequestResponseOkData,
        DOWNLOAD, transformDownloadResponseOkData,
        UPLOAD, transformUploadResponseOkData,
    } from 'miniprogram-network';
     
    // Request的默认响应拦设为成transformRequestResponseOkData,
    // 正常2xx返回data部分,否则rejected
    REQUEST.Defaults.transformResponse = transformRequestResponseOkData;
    // Download的默认响应拦设为transformDownloadResponseOkData,
    // 正常2xx返回string,否则rejected
    DOWNLOAD.Defaults.transformResponse = transformDownloadResponseOkData;
    // Upload默认响应拦截transformUploadResponseOkData,
    // 与小程序wx.uploadFile 不同之处会尝试进行JSON.parse反序列化字符串
    // 正常2xx返回data,否则rejected
    UPLOAD.Defaults.transformResponse = transformUploadResponseOkData;
     
    DOWNLOAD.download('url')
        .then(path=>{
            console.log(path);//string
        }).catch(res=>{
            console.error(res);//objct
        });
     
    // 参数绑定
    Network.put('items/{id}',data,{
            params: {id:123456}, // Object绑定模板参数
        }).then(console.log)
    Network.put('items/{0}',data,{
            params: [123456], // 数组绑定模板参数
        }).then(console.log)

    取消操作 CancelToken (abort)

    可通过cancel token 方式取消请求

    import { get, CancelToken } from 'miniprogram-network';
     
    // 创建一个 tokensource
    const source = CancelToken.source();
     
    get('items', { skip: 100 }, { 
        // 配置 cancelToken
        cancelToken: source.token 
    });
     
    // 需要取消操作时
    source.cancel('cancel the get');

    快速配置 setConfig

    import { setConfig } from 'miniprogram-network';
     
    //将Request,Upload,Download的默认baseURL设置为'https://api.newfuture.cc'
    setConfig('baseURL', 'https://api.newfuture.cc');
     
    //等效方式
    setConfig({
        baseURL:'https://api.newfuture.cc'
    })
     

    Cache 缓存

    • cacheRequest,cacheGetREQUEST公用默认配置
    • cacheDownloadDOWNLOAD公用默认配置
    import {
        cacheConfig, // 缓存配置
        cacheGet, // 与get方法一致,自动使用cache
        cacheDownload, // 与download方法一致,自动使用cache
        cacheRequest, // 与request方法一致,自动使用cache
        } from 'miniprogram-network';
     
    cacheConfig.expire = 10*60*1000;//设置缓存有效时间
    // 设置缓存条件,默认响应状态为2xx缓存数据
    cacheConfig.resultCondition = function(res){
        return res.statusCode === 200;
    }
     
    //cacheGet 与 Request共用配置
    cacheGet('xxx').then(resolve);
    cacheGet('xxx').then(resolve);
     
    // cacheDownload 与 Download共用配置
    cacheDownload('xxx').then();
     

    LifeCycle

    详情说明miniprogram-network-life-cycle

    Install

    npm i miniprogram-network@4.5.2

    Version

    4.5.2

    License

    Apache-2.0

    Unpacked Size

    60.7 kB

    Total Files

    30

    Last publish

    Collaborators

    • newfuture