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十分相似,快去试试吧!

相关推荐
东风破_5 小时前
大前端手里的 Next.js:从 #root 到 SEO,一份 HTML 的两种命运
前端·后端
IT_陈寒5 小时前
Vue的v-for不听话?我被这个Key的坑整懵了
前端·人工智能·后端
王林不想说话5 小时前
ES6 到 ES2026 全面进阶指南:新特性、原理、示例与工程落地
前端·javascript·面试
用户43523713814935 小时前
🚀 Vue3 + TypeScript 学习笔记:从泛型 T 到 Promise<T>,终于搞懂了 keyof 和 typeof
前端
跟着群主去吃肉5 小时前
Cinemachine的应用-第三人称视角
前端·unity3d·游戏开发
东方小月5 小时前
从零开发一个 Coding Agent(十):实现 CLI 参数解析与静态命令
前端·人工智能·开源
阿黎梨梨5 小时前
Next.js 全栈开发:从 SPA 的痛点到 SSR 的破局之道
前端·后端
沐道PHP5 小时前
CRMEB多店版diy装修位置偏移修复
前端
WZzz5 小时前
JavaScript 中 this 的「指向」完整教程
javascript
犀利的毛豆豆5 小时前
useCallback
前端