VUE3中,使用Axios

文章介绍了如何在Vue3项目中使用Axios进行简单的数据交互,包括安装Axios、配置基础URL、创建服务以及在组件中调用API。同时,展示了如何利用ElementPlus库显示等待窗体(loading)作为请求拦截器的一部分,提供更好的用户体验。
摘要由CSDN通过智能技术生成

axios是前后端数据交互的重要桥梁,理论和概念这里不再叙述了。可以看看官网。

axios中文文档|axios中文网 | axios

本例子,从简单到难。

目录

一、简单的使用

二、查询数据时出现等待窗体


一、简单的使用

1.废话少说,先使用HBuilder X建立一个能运行的项目

2.安装axios

使用如下命令安装

npm install axios

安装成功后

  

3. 建立文件夹和文件,如图所示

4.demoAxios.js中的代码,其他的选项可以自己增加

import axios from 'axios'
//export将service传出去
export const service = axios.create({
	baseURL: 'https://localhost:5001/api'
	//baseURL: import.meta.env.VITE_BASE_URL, //这里也可以使用变量
	//timeout: 30000,//超时设置
	//withCredentials: true, //异步请求携带cookie
	//headers: {
	// 		//设置后端需要的传参类型
	// 		'Content-Type': 'application/json;charset=UTF-8;',
	// 		//'token': 'your token',
	// 		'X-Requested-With': 'XMLHttpRequest'
	// 	}
})

5.使用

在vue界面中,先导入,然后直接写api地址,其中api已经写好了。

HelloWorld.vue代码,其中没用的代码已经删除了

<script setup>
	import {
		ref,
		onMounted
	} from 'vue'
	import {
		service
	} from "/store/demoAxios.js"

	let user = ref("admin")
	let passWord = ref("123456")
	const Login = async () => {
		await service.get(`User/Login?userName=${user.value}&passWord=${passWord.value}`).then(
			res => {
				if (res.status == 200) {
					console.log(res.data)
				} else {
					ElMessage.error('账号或者密码错误!!')
				}
			})
	}

	//初始化后执行
	onMounted(() => {
		Login()
	})
</script>

<template>

</template>

<style scoped>
	a {
		color: #42b983;
	}
</style>

6.运行后,效果

至此,简单的使用就完成了。 

二、查询数据时出现等待窗体

1.封装的时候,只需要更改demoAxios.js文件即可。

并且使用了element-plus,所以要先进行安装element-plus,安装步骤不再叙述了。

安装完成后,直接导入,然后调用。

注释已经写的很清晰了,可以看注释

demoAxios.js代码

import axios from 'axios'
import {
	ElLoading
} from 'element-plus'



//export将service传出去
export const service = axios.create({
	baseURL: 'https://localhost:5001/api'
	//baseURL: import.meta.env.VITE_BASE_URL, //这里也可以使用变量
	//timeout: 30000,//超时设置
	//withCredentials: true, //异步请求携带cookie
	//headers: {
	// 		//设置后端需要的传参类型
	// 		'Content-Type': 'application/json;charset=UTF-8;',
	// 		//'token': 'your token',
	// 		'X-Requested-With': 'XMLHttpRequest'
	// 	}
})


//下面有2种写法,一种是声明函数的写法,一种是箭头函数的写法,都可以

//request interceptor  请求拦截器
service.interceptors.request.use(
	function(config) {
		// 在发送请求之前做些什么
		console.log(config)
		console.log('这里是请求前')
		//这里是使用了element-plus,进行模态化窗体,也就是等待查询的意思,本案例在api中,设置了等待时间
		ElLoading.service({
			lock: true,
			text: 'Loading...',
			background: 'rgba(0, 0, 0, 0.7)', //灰色,删除就是白色的
		})

		return config
	},
	function(error) {
		// 对请求错误做些什么
		console.log(error)
		console.log('这里是请求错误')

		return Promise.reject(error)
	}
)


//响应拦截器
service.interceptors.response.use(
	res => {
		// 在请求成功后的数据处理
		if (res.status === 200) {
			console.log(res.status)
			console.log('这里是请求成功后')
			//查询成功,关闭模态化窗体
			ElLoading.service().close()

			return res;
		} else {
			console.log(res.status)
			console.log('这里是请求失败后')
			ElLoading.service().close()

			return res;
		}

	},
	err => {
		// 在响应错误的时候的逻辑处理
		console.log('这里是响应错误')

		return Promise.reject(err)
	});

2.效果

来源:VUE3中,使用Axios_vue3 axios_故里2130的博客-CSDN博客 

Vue3的组合式API使用axios,可以按照以下步骤进行: 1. 首先,安装axios依赖。你可以使用npm或者yarn来进行安装,例如:`npm install axios`。 2. 在你需要使用axios的组件,引入axios模块。你可以使用`import axios from 'axios'`。 3. 在组件,创建一个异步函数用来发送axios请求。你可以使用`async/await`或者`Promise`来处理异步操作。例如: ```javascript async function fetchData() { try { const response = await axios.get('http://example.com/api/data'); const data = response.data; // 处理获取到的数据 } catch (error) { // 处理错误情况 } } ``` 4. 调用这个异步函数,可以在组件的生命周期钩子函数或者其他方法调用。例如,在created钩子函数调用: ```javascript export default { created() { fetchData(); } } ``` 或者在某个事件触发时调用: ```html <button @click="fetchData">获取数据</button> ``` ```javascript export default { methods: { async fetchData() { try { const response = await axios.get('http://example.com/api/data'); const data = response.data; // 处理获取到的数据 } catch (error) { // 处理错误情况 } } } } ``` 通过以上步骤,你就可以在Vue3的组合式API使用axios来发送异步请求了。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue3全局配置 axios 的两种方式](https://blog.csdn.net/weixin_56650035/article/details/125610295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故里2130

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值