vue3 Axios封装使用

先安装axios:

npm install axios

第一步:项目src下创建一个名为request的文件夹(看一下示例图):

然后在request下创建两个api.tsindex.ts的文件

api.ts里的内容:(url写你自己的接口

//我要用到的一些接口
import service from "@/request/index";
 
// 接口
export function login() {//接口ILoginData接口的变量名
    return service({
        url: "/index.php/index/index/index",      //写你自己的接口
        method: "GET" 
    })
}
 
// // 接口
// export function getGoodsList(){
//     return service({
//         url: "/getGoodsList",
//         method: "GET"
//     })
// }

index.ts里的内容:(baseURL:“里写你自己的接口地址“)

import axios from "axios";
//创建axios实例
const service = axios.create({
	baseURL: " ",   //写你自己的接口地址
	timeout: 5000,//超时时间
	headers: {//编译语言
		"Content-type": "application/json;charset=utf-8"
	}
})
//请求拦截
//就是你请求接口的时候,我会先拦截下来,对你的数据做一个判断,或者携带个token给你
service.interceptors.request.use((config) => {//请求的数据
	config.headers = config.headers || {}  // 没有数据的话就设置为空设置为数据
	if (localStorage.getItem("token")) {//先确保登录
		config.headers.token = localStorage.getItem("token") || ""
	}
	return config//必须返回出去,不然请求发不出去
}, error => {
	//处理错误请求
	return Promise.reject(error)
})
//响应拦截:后端返回来的结果
service.interceptors.response.use((res) => {
    
	const status: number = res.status//code是后端的状态码
	if (status !== 200) {
		//请求失败(包括token失效,302,404...根据和后端约定好的状态码做出不同的处理)
		return Promise.reject(res)
	} else {
		//请求成功
		console.log(res, '成功----')
		return Promise.resolve(res.data)
	}
}, (err) => {
	console.log(err, '错误信息的处理')//错误信息的处理
	//处理错误响应
	return Promise.reject(err)
})

//因为别的地方要用,所以就把实例暴露出去,导出
export default service

在你自己的页面使用引入api接口(以下示例代码是我的调用接口,改成你自己的):

<template>
    <div>
       <ul v-for="(item,index) in arr" :key="index">
        <li>{{item}}</li>
       </ul>
    </div>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import { login } from '../request/api'; // 引入你的API接口

// 定义一个响应式引用以存储API响应
// const response = ref(null);

const arr = ref<string[]>([]); 

// 在组件挂载后调用接口
onMounted(async () => {
  login().then(res => {
    // response.value = res;
    arr.value = res.data as string[];
    // console.log(res.data);
  })
});
</script>

Vue3Axios是一个基于Vue3和Axios的网络请求库。下面是Vue3Axios封装使用步骤: 1. 安装Vue3Axios 你可以通过npm或者yarn安装Vue3Axios: ``` npm install vue3-axios --save ``` 或者 ``` yarn add vue3-axios ``` 2. 封装Vue3Axios 在src目录下新建一个api目录,用于封装Vue3Axios。在api目录下新建一个index.js文件,用于封装Vue3Axios的实例。代码如下: ``` import axios from 'axios' import { reactive } from 'vue' const instance = axios.create({ baseURL: 'http://localhost:3000', // 接口的基础路径 timeout: 10000 // 超时时间 }) const state = reactive({ loading: false // 请求状态 }) // 请求拦截器 instance.interceptors.request.use( config => { state.loading = true // 请求开始,loading为true return config }, error => { state.loading = false // 请求出错,loading为false return Promise.reject(error) } ) // 响应拦截器 instance.interceptors.response.use( response => { state.loading = false // 响应结束,loading为false return response }, error => { state.loading = false // 响应出错,loading为false return Promise.reject(error) } ) export default { get(url, params) { return instance.get(url, { params }) }, post(url, data) { return instance.post(url, data) }, put(url, data) { return instance.put(url, data) }, delete(url) { return instance.delete(url) }, state // 请求状态 } ``` 在这段代码中,我们使用Vue3的reactive函数来实现数据响应式,同时封装了四个常用的网络请求方法,并且添加了请求和响应拦截器来处理请求状态。 3. 使用Vue3Axios 在组件中使用封装好的Vue3Axios。代码如下: ``` <template> <div> <div v-if="api.state.loading">正在加载...</div> <div v-else>{{ result }}</div> </div> </template> <script> import api from '@/api' export default { data() { return { result: '' } }, mounted() { api.get('/api/test').then(res => { this.result = res.data }) } } </script> ``` 在组件中,我们通过导入封装好的Vue3Axios实例,来进行网络请求。在请求过程中,我们可以使用reactive函数封装的state对象来获取请求状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值