uniapp 封装请求

新建文件夹及文件

在这里插入图片描述

  1. config.js 配置文件
export default {
   url: "", //开发者服务器接口地址
   method: "GET",	// 请求方式
   timeout: 6000 	// 请求超时时间
}
  1. interface.js
//导入私有配置
import _config from "./config.js";
export default function $http(options) {
	options.url = _config.url + options.url;
	
	return new Promise((resolve, reject) => {
		// 服务器成功返回的回调函数
		_config.success = (res) => {
			if (res.statusCode == 200) {
				resolve(res);
			} else {
				if (options.handle) {
					reject(res.statusCode);
				} else {
					try {
						Promise.reject(res).catch(err => {
							_page_error(res.statusCode || res.errMsg);
						});
					} catch (e) {
						console.log(e)
					}
				}
			}
		}

		// 服务器失败返回的回调函数
		_config.fail = (err) => {
			let reg = /request:fail/;
			if (reg.test(err.errMsg)) {
				// 无网络
				reject("noNetWork");
			} else {
				// 请求超时'
				reject("requestTimeOut");
			}
		}

		// 开始请求
		uni.request(Object.assign({}, _config, options));
	});
}

// request 錯誤
function _page_error(err) {
	switch (err) {
		case 401:
			// 错误码404的处理方式
			console.error("请求被拒绝")
			break;
		case 404:
			// 错误码404的处理方式
			console.error("没有找到接口地址")
			break;
		case 405:
			console.error("错误的请求")
			break;
	}
}
  1. index.js
import https from "./interface.js";
// 请求api
const testApi= (data) => {
	return https({
		url: '/api/test',//请求地址api
		method: 'GET', // 默认GET
		data
		// handle:true //是否需要失败的回调(fail)
	})
}
// 导出 api
export default {
	testApi
}
  1. 使用 promise 判断当前页面所有接口是否请求完成
import $http from "./index.js"; // 引入index.js
let promiseAllArr = [that.$http.testApi({type: 1}), that.$http.testApi({type: 2})];
	Promise.all(promiseAllArr).then(res => {
		console.log("res", res); //所有接口请求完成
	}).catch(err => {
		console.log("err", err);
	});
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值