uni.request的封装async/await

本文详细介绍了如何在uni-app项目中使用原生的uni.request进行请求封装,包括设置请求参数、处理不同请求类型及状态码响应。通过具体实例展示了如何在组件中调用封装后的请求方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我看有一部分人用flyio这个库封装的,但是我看了官方是支持有限:
在这里插入图片描述

后面关于它的封装我会再写的,这篇封装就用原生的uni.request封装,只不过原生的没有请求拦截器响应拦截器,只能自己判断各种状态:

首先,在项目根目录下新建文件夹api和一个request.js文件:
在这里插入图片描述

然后这个js文件,注释已经很明白了:


// request.js

let baseURL='http://192.168.1.140:8090';
var Http = '';

// 传参:methods请求方法,params参数,urls接口,isFormData参数格式是否FormData,header请求头
Http = async function(methods, params, urls, isFormData = false, header = {}) {
	let newParams = {}
	
	//  判断参数是否是form-data
	if(params && isFormData){
		newParams = new FormData()
		for(let i in params){
			newParams.append(i,params[i])
		}
	}else{
		newParams = params
	}
	
	// 不同请求的判断  // 这里依据项目要求自行更改传参格式
	let response = {}; // 请求的返回值
	if(methods === 'put'|| methods === 'post'||methods === 'patch'){
		try{
			response =  await uni.request({method: methods, url: baseURL + urls, data: newParams, header:header})
		}catch(err){
			response = err
		}
	}else if(methods === 'delete'|| methods === 'get'){
		try{
			response =  await uni.request({method: methods, url: baseURL + urls, data: newParams, header:header})
		}catch(err){
			response = err
		}
	}
	// response 这里直接return response的话,可以拿到返回的所有请求头数据,可以打印看看,然后根据自己项目需求进行判断
	// 有点麻烦的是这里的一串判断,因为没有拦截器
	if (response[1].data.code == 1000) {
		return response[1].data; // 返回响应值
	} else {
		if (response[1].data.code == 1001) {   // 重新登陆
			uni.redirectTo({
				url: 'login'   
			})
		}
		uni.showToast({    // 显示接口返回msg
		    title: response[1].data.msg,
		    duration: 2000
		});
	}
	
}

export default Http

然后在mian.js里面引入挂载在原型下:

import Http from '@/api/request.js'
Vue.prototype.$Http = Http

然后在组件中使用:

onLoad() {
	this.getIn()
},
methods: {
	async getIn () {
		let res = await this.$Http('post', {userName: 'admin',passWord: 'admin'}, '/signIn')
		console.log(res)     // 拿到返回数据
	},
}

这打印返回数据结果如下:
在这里插入图片描述
就是这样啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值