vue、uniapp封装网络请求教程

1、在根目录下新建utils文件夹,新建config.js文件,配置好自己的服务器域名

2、在utils文件夹下,再新建封装接口的request.js文件

3、新建api文件,新建api.js文件,用来写具体的接口请求

具体代码如下:

1、在根目录下新建utils文件夹,新建config.js文件,配置好自己的服务器域名

let baseUrl = ""; //域名
if (process.env.NODE_ENV === 'development') {
	// 开发环境
	baseUrl = `https://××××××.com`;
} else {
	// 生产环境
	baseUrl = `https://××××××.com`
}

//兑换比例
export default {
	baseUrl
}

2、在utils文件夹下,再新建封装接口的request.js文件

import config from './config.js';
import used from './used.js';
//域名
const baseUrl = config.baseUrl;

//请求 
function http(opts, token) {
	let thisBaseUrl = config[opts.baseUrl] || baseUrl; //单独配置的域名   
	let httpDefaultOpts = {
		url: thisBaseUrl + opts.url,
		data: opts.params,
		method: opts.method,
		timeout: 20000,
		sslVerify: false,
		header: opts.method == 'GET' ? {
			'X-Requested-With': 'XMLHttpRequest',
			"Accept": "application/json",
			'content-Type': 'application/x-www-form-urlencoded'
		} : {
			'X-Requested-With': 'XMLHttpRequest',
			'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
		},
		dataType: 'json',
	}
	//是否带token
	if (token) {
		httpDefaultOpts.header.token = token;
	}

	//promise
	let promise = new Promise(function(resolve, reject) {
		let network; //网络状态
		//网络状态
		uni.getNetworkType({
			success: function(res) {
				network = res.networkType;
				if (res.networkType == 'none') {
					uni.showToast({
						title: '无网络',
						icon: 'none',
						duration: 5000
					});
				}
			}
		});

		uni.request(httpDefaultOpts).then(
			(res) => {
				//成功
				if (res) {
					if (res.statusCode == 200|| ( res.data && res.data.status == "success")) {
						//请求成功,返回最终需要的业务数据
						resolve(res.data);
					} else {
						if (res.statusCode == 401 || (res.data && res.data.code == 401)) {
							this.removeStorageSyncVal('token');
							this.removeStorageSyncVal('userInfo');
							uni.showModal({
								title: '提示',
								content: '请登陆后操作',
								success: function(res) {
									if (res.confirm) {
										uni.redirectTo({
											url: '/pages/login/login'
										})
									} else if (res.cancel) {
										uni.navigateTo({
											url: '/pages/login/login'
										})
									}
							
								}
							})
							
							reject("登录超时")
							return
						}
						//其他情况的失败,返回失败原因
						reject(res.info)
					}

				} else {
					//失败
					reject("请求失败")
				}
			}
		).catch(
			(response) => {
				reject(response)
			}
		)
	})
	return promise
}


//请求 - 不带token
const httpRequest = (opts) => {
	opts.params = opts.params ? opts.params : {};
	if (opts.params.token) {
		return http(opts, opts.params.token);
	} else {
		return http(opts);
	}
};
//请求 - 带Token
const httpTokenRequest = (opts) => {
	let token = uni.getStorageSync('token');
	opts.params = opts.params ? opts.params : {};
	return http(opts, token);
};

export default {
	httpRequest,
	httpTokenRequest
}

3、新建api文件,新建api.js文件,用来写具体的接口请求

import Request from '@/utils/request.js';
import config from '@/utils/config.js'

export default {

	get_new_tips: function(params) {
		return Request.httpTokenRequest({
			url: '/index/get_new_tips',
			method: 'GET',
			params: params
		});
	},
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值