每篇文章仅做为自己的备忘笔记,若有描述不清或不对的地方还请指明,感谢^_^

uni封装request请求

1、封装Api 列表 (文件名:apiUrlList.js)

var apiUrlList = {
    service: "https://www.cnblogs.com/", //服务器
    picUrl:'/static/images/',//图片地址
    "loginAPI": { url: "/client/auth/login",method: "POST",name:"用户登录"},
};

export default apiUrlList

 

2、封装请求(文件名:ajax.js )

/**=====================================================================核心:接口文件====*/
import apiUrlList from "./apiUrlList.js" //引入接口文件
/**=====================================================================核心:网络请求====*/
/**
 * 功能:myAjax('API接口',{提交的数据},'重定义提示文本',{控制加载提示})
 * 数据类型:myAjax('字符串|必填',{对象|选填},'字符串|选填',{对象|选填})
 * 实例:myAjax('/api/login/index',{token:000000},'登录',{show:true,mask:true,title:'登录中…'})
 */
 function myAjax(api,data,apiName,showLoading){

    var mask=true;
    var title='加载中';
    var show=true;

    if(showLoading){
        show=showLoading.show;//false:不显示
        mask=showLoading.mask;//false:可点击
        title=showLoading.title;//标题
    }

    if(show){
        uni.showLoading({
            title:title,
            mask:mask
        });
    }

    let that = this;
    var apiUrl = apiUrlList.service + apiUrlList[api].url;
    var method = apiUrlList[api].method;
    if(!apiName){apiName=apiUrlList[api].name}else{apiName=apiUrlList[api].name+"===============>"+apiName}
    return new Promise(function (resolve, reject) {
        // console.clear();
        data.token=uni.getStorageSync('landingInfo').token;

        uni.request({
            url:apiUrl, //仅为示例,并非真实接口地址。
            data:  data,
            method:method,
            header: {
                // 'content-type': 'application/json' // 默认值
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            success: (apiRes) => {//成功
                switch (apiRes.data.code) {
                    case 0:
                        console.warn(
                            "%c 备注:", 'color:orange;font-size:15px', apiName,
                            "\n 提交方式:", method,
                            "\n 提交地址:", apiUrl,
                            "\n 提交data:", data,
                            "\n 请求返回", apiRes.data);
                        break;
                    default:
                        console.error(
                            "%c 备注:", 'color:orange;font-size:15px', apiName,
                            "\n 提交方式:", method,
                            "\n 提交地址:", apiUrl,
                            "\n 提交data:", data,
                            "\n 请求返回", apiRes.data);
                        break;
                }
                resolve(apiRes.data);//成功返回,resolve是Promise的回调方式
            },
            fail(apiRes) {//失败
                console.error(
                    "%c 备注:", 'color:red;font-size:15px',apiName,
                    "\n 提交方式:", method,
                    "\n 提交地址:",  apiUrl,
                    "\n 提交data:",  data,
                    "\n 请求返回", apiRes);

                uni.showModal({
                    title: '提示',
                    content: 'API请求:'+apiName+' 失败',
                    confirmText:"结束",//确定按钮的文字
                    cancelText:"继续",//取消按钮的文字
                    showCancel:true,//是否显示取消按钮
                    success: function (showModalRes) {
                        if (showModalRes.confirm) {

                        } else if (showModalRes.cancel) {
                            apiRes.apiName=apiName;
                            reject(apiRes);//失败返回,resolve是Promise的回调方式
                        }
                    }
                });
                uni.hideLoading();
            },
            complete(res){//结束
                if (res.data.code == 401) {
                    that.$gotoPage('/', 1);
                    return false
                }
                uni.hideLoading();
            }
        });
    })
}

/**=====================================================================核心:开放入口函数====*/
// module.exports = {
//     myAjax: myAjax
// };

export  {//
    myAjax,
    apiUrlList
}
封装网络请求

 

 

 

3、使用vue链 成为全局调用

import {myAjax,apiUrlList} from 'appConfig/ajax.js';  //引入

Vue.prototype.$http =myAjax ;      //申明

Vue.prototype.$apiUrlList =apiUrlList ; //申明

 

 

 

 

4、在需要请求的位置

let that=this;
var data={};
this.$http("loginAPI", data).then((res) => {
if(res.code=='0'){

}else{
uni.showToast({
title: res.msg,
icon: "none"
});
}
}).catch((res) => {
console.error(res);
uni.showToast({
title: '数据出错:'+(res.apiName||""),
icon: "none"
});
});

  

 

posted @ 2020-05-22 15:13  菜汤不甜  阅读(2203)  评论(0编辑  收藏  举报