如何在UNIAPP里发送网络请求 #在axios里内嵌request的大聪明前来填坑

目录

1)用axios封装,内嵌request🤪 

2)请求调用,对比axios和request哦😩

3)在多个地方进行网络请求的时候,不想重复写入请求地址的前缀,so我们需要封装一下。😕

4)封装request请求,偷懒写请求前缀,并且获取请求头获取数据:🤔


关于uniapp如何使用网络请求?在我们官网文档里的用法直接uni.request(obj)就🆗了,but因为习惯了axios去做请求,又懒得去查官方文档,就傻傻的用了axios去内嵌一个request请求,接下来展示一下“大聪明的高光时刻”吧。

1)用axios封装,内嵌request🤪 

2)请求调用,对比axios和request哦😩

import axios from '@/utils/axios.js';

// 未封装request时,需要填写完整的url请求地址
uni.request({
	method:"POST",
	url:"http://localhost:8888/api/userInfo/login",
	data:{code:loginRes.code},
	success(res) {
		// console.log(res.data.data);
		// console.log(res.header);
		console.log("登录请求发送之后获取的请求头数据",res);
	}
})

我们在做网络请求的时候,直接调用uniapp的请求api即可,而做了axios内嵌request就是在uni,request外层多加一层axios请求罢了。

// 已被我弃用,但是这个封装得挺好的哦,在做vue项目的时候可以食用。
// axios.post('/api/userInfo/login',{
// 	code: loginRes.code,
// }).then(res => {
// 	console.log("登录请求发送之后获取的请求头数据",res);
// 	const authorization = res.header.Authorization;
// 	that.setAuthorization(authorization);
// 	// console.log(that.getAuthorization);
// 	const text = res.data.data;
// 	const obj = that.convertTextToObject(text);
// 	// 将用户登录之后的信息存进vuex里
// 	that.storageUserInfo(obj);
// 	console.log("检查是否成功将数据存进vuex",that.$store.state);
// 	that.goToIndex();
// })

3)在多个地方进行网络请求的时候,不想重复写入请求地址的前缀,so我们需要封装一下。😕

而我上面做的是一个微信一键登录请求,请求的时候需要拿到一个请求头,为了后续做登录拦截的时候数据渲染所适用的。

当我们在一键登录的时候会返回一个请求头,我们需要将它存进vuex里,在网络请求的时候,需要有请求头才能拿到数据,否则就不能。如:

如何将它存进vuex呢,在上一篇文章就总结了哈😬

 

 4)封装request请求,偷懒写请求前缀,并且获取请求头获取数据:🤔

// 我的后端请求地址
let baseURL = 'http://localhost:8888';
// 是否在控制台显示接口请求日志,本地环境启用,打包环境禁用
let showHttpLog = false;

import { mapGetters } from "vuex";
 
export const myRequest = (options) => {
	//加载loading
	// uni.showLoading({ 
	//     title:'数据加载中'
	// })
	return new Promise((resolve, reject) => {
		uni.request({
			url: baseURL + options.url, //接口地址:前缀+方法中传入的地址
			method: options.method || 'GET', //请求方法:传入的方法或者默认是“GET”
			data: options.data || {}, //传递参数:传入的参数或者默认传递空集合
			headers: {
			    //自定义请求头信息 vuex拿出来的请求头数据
				Authorization: this.getAuthorization
			},
			success: (res) => {
				//返回的数据(不固定,看后端接口,这里是做了一个判断,如果不为true,用uni.showToast方法提示获取数据失败)
				if (res.data.success != true) {
					return uni.showToast({
						title: '获取数据失败',
						icon: 'none'
					})
				}
				// 如果不满足上述判断就输出数据
				resolve(res)
			},
			// 这里的接口请求,如果出现问题就输出接口请求失败
			fail: (err) => {
				console.log(err)
				reject(err)
			}
		})
	})
}

我们导入之后,直接调用即可。

// 导入我的请求方法
import { myRequest } from '@/utils/request.js'

// 登录获取到用户的openid拿到code
// 调用请求参数
methods: {
    ...mapMutations(["storageUserInfo","setAuthorization"]),
	// 用户一键登录获取用户的openid
	wxLogin() {
        let that = this;
		uni.login({
			provider: 'weixin',
			success: function(loginRes) {
                // myRequest({
				// 	url: '/api/userInfo/login',
				// 	method: 'post', 
				// 	data: {
				// 		code: loginRes.code,
				// 	},
			// })
            }
        })
    }
}

本期内容到此结束,感谢观看!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值