uni-app网络请求封装及发送

在看本篇文章之前,请先至少学会独立完成vue2项目

首先配置request.js

javascript 复制代码
const url_all = {
	'DEV': 'http://localhost:8888', // 开发
	// 生产  'PRO': 'http://111.111.111.111:8080', 
}


let BASEURL = url_all['DEV'] // 调整当前环境


/*
 * 全局请求封装
 * @param path 请求路径
 * @param method 请求类型(GET/POST/DELETE等)
 * @oaram data 请求体数据
 * @param loading 请求未完成是是否显示加载中,默认为true
 */
export default (path, method, data = {}, loading = true) => {
	// 获取存储token
	const token = uni.getStorageSync("token");


	if (loading) {
		uni.showLoading({
			title: "加载中",
			mask: true
		});
	};
	//根据token进行调用函数
	if (token != '') {
		return tokenRequest(path, method, data, loading, token)
	} else {
		return noTokenRequest(path, method, data, loading)
	}
};


// 无token时发送请求函数
function noTokenRequest(path, method, data, loading) {
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASEURL + path,
			method: method,
			data,
			success(response) {
				// console.log('%c响应拦截:', ' background:green', response);
				/* if (response.data.code === 3001) {
					// logout()
				} */
				/* if (response.data.code !== 20) {
					uni.showToast({
						icon: "none",
						duration: 4000,
						title: response.data.msg
					});
				} */
				console.log(response.data)
				resolve(response.data);
			},
			fail(err) {
				uni.showToast({
					icon: "none",
					title: '服务响应失败'
				});
				console.error(err);
				reject(err);
			},
			complete() {
				uni.hideLoading();
			}
		});
	});
}




// 有token时发送请求函数
function tokenRequest(path, method, data, loading, token) {
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASEURL + path,
			method: method,
			data,
			header: {
				"token": token
			},
			success(response) {
				console.log('%c响应拦截:', ' background:green', response);
				if (response.data.code === 40101) {
					// logout()
				}
				console.log(response.data)
				resolve(response.data);
			},
			fail(err) {
				uni.showToast({
					icon: "none",
					title: '服务响应失败'
				});
				console.error(err);
				reject(err);
			},
			complete() {
				uni.hideLoading();
			}
		});
	});
}

然后我们可以在api文件夹下的请求中引入刚刚已经封装好的request

javascript 复制代码
import request from '@/utils/request.js'; // 封装的request.js文件的位置




// login
export const login = (loginDTO) => {
	return request(`/tms-login/user/login`, 'POST', loginDTO)
}

最后在你的vue文件中使用这个请求

javascript 复制代码
methods: {
			// 登录
			login() {
				login(this.loginDTO).then(res => {
					uni.setStorageSync("token",res.data.token);
					if (res.code == 200) {
						uni.switchTab({
							url: "/pages/task/dispatch"
						});
					}else{
						alert("登录失败");
					}


				})
			}
		},

至此,你已经学会了uni-app是如何发送请求了!是不是和vue十分相似,快去试试吧!

相关推荐
weixin_417396833 分钟前
酒店弱电怎么验收?四个阶段与逐项检查清单
开发语言·前端·php·综合布线·弱电
风骏时光牛马3 分钟前
探索AI开源工具,解锁原生创造新体验
前端
u0111026755 分钟前
Vue 页面离开后还在轮询?统一清理计时器、监听器与观察器
前端·javascript·vue.js
大猩猩X8 分钟前
vue 表格组件 vxe-table 实现多行编辑,支持增删改查与校验
前端·javascript·vue.js·vxe-table
跨境数据猎手1 小时前
跨境电商系统三大 Web 漏洞的防护:SQL 注入、XSS、CSRF
前端·sql·xss
冒险的豆子2 小时前
Proxy & Vue 响应式(合并精简版,适合面试)
前端·javascript·vue.js
Java后端的Ai之路2 小时前
前端技术Vue-18-视图中的渲染
前端·javascript·vue.js
程序员海军9 小时前
用了两年多 GPT,我最近开始换模型了,还折腾了个求职避坑 Agent
前端·人工智能·后端
zttbee9 小时前
echarts图表tooltip色块失效
前端·javascript·echarts
excel11 小时前
IndexNow:让搜索引擎更快发现网站更新的主动通知协议
前端·后端·架构