更新记录

1.0.0(2024-03-18)

项目发布


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.7.9 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × ×

一、网络请求

一个支持Promise和拦截器的网络请求

二、简介

基于Promise开发,网络请求,支持、请求地址、请求类型、请求参数动态配置,项目级别的网络请求库,它有更小的体积,易用的api,方便接口管理与后期维护。

三、ruquest封装

import env from '@/config/env.js';
import tool from '@/utils/tool.js';
/**
 * @exports
 * 网络请求
 */
function service(options = {}) {
    options.load == true ? tool.loading(options.loading) : false;
    options.timeStart = Date.now();
    options.url = options.url != undefined ? `${env.baseUrl}${options.url}` : options.urls;
    options.header = options.header != undefined ? options.header : {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8',
    };
    return new Promise((resolved, rejected) => { // resolved是返回成功数据,rejected返回错误数据
        options.success = (res) => {
            // 如果请求回来的状态码不是200则执行以下操作
            if (res.statusCode !== 200) {
                tool.condition(res.statusCode) // 返回错误信息
            } else {
                if (res.data.code == -1 || res.data.code == -2) { // 错误提示(根据项目情况进行判断)
                    tool.setTimeout(res.data.message)
                } else {
                    resolved(res.data) //返回正常
                }
            }
            options.load == true ? tool.hideLoading() : false;
            if (env.isLog) {
                console.log('========================================================================')
                console.log('==  接口地址:', options.url)
                console.log('==  请求头部:', options.header)
                console.log('==  接口参数:', options.data)
                console.log('==  请求类型:', options.method)
                console.log("==  接口状态:", res.statusCode);
                console.log("==  消耗时间:", `${Date.now() - options.timeStart} 毫秒`);
                console.log('==  后台返回:', res);
                console.log('==  取值列表:', res.data);
                console.log('========================================================================')
            }
        };
        options.fail = (err) => {
            tool.toast('服务器正在升级,给您带来不便,敬请谅解。') // 请求失败弹窗
            rejected(err);
            options.load == true ? tool.hideLoading() : false;
        };
        uni.request(options);
    });
}

export default service;

四、使用

示例

<script setup>
    import tool from '@/utils/tool.js'
    import {
        ref
    } from 'vue'
    import {
        onLoad
    } from "@dcloudio/uni-app"
    import {
        getPicType,
    } from '@/config/api.js';

    const picList = ref([])

    onLoad(() => {
        getPics()
    })

    const getPics = async () => { //获取图片类别
        let res = await getPicType('WallPaper', 'getAllCategoriesV2', '360chrome')
        picList.value = res.data
    }

    const onItem = (item) => { //类别事件
        tool.toast(item.name)
    }
</script>

五、请下载示例工程项目

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

不包含

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问