6.Vue3.0使用axios-二次封装

安装

npm install  --save axios

在mian.js中引入

import axios 'axios' (axios不需要使用vue.use(),我也是不明所以然啊

到这里我都会对axios进行二次封装

在http文件夹中新建api.js 文件

引入axios

import axios 'axios'

对post,get请求进行封装

get请求:

15276316-a3a01508f4225b4d.png
get请求封装


postJson请求:

15276316-383d9fa7e2ced83a.png
postJson请求封装


postForm请求:

15276316-8251e6b359b20840.png
postForm请求封装


文件请求:(这个其实不怎么用到Element有文件上传的插件)

15276316-d0242321dcf1c06f.png
文件请求封装


封装完成了之后对它们进行输出(install 方法将被作为 Vue 的参数调用):

15276316-5cf4b13c0d19b442.png
输出


在mian.js中引入并且注册

import axiosApi from '@/http/api.js'

Vue.use(axiosApi)

axios有两个拦截器请求拦截器,响应拦截器可以进行处理

响应拦截器:

15276316-5d1b74a5c3d13e10.png
15276316-728480d7f030b107.png
响应拦截器


请求拦截器:(上个项目中使用的是token)

15276316-9757d8e439e87b27.png
请求拦截器
以下是Vue3.0使用Element Plus和Axios封装示例: 1. 首先,安装Element Plus和Axios: ```bash npm install element-plus axios ``` 2. 在main.js中引入: ```javascript import { createApp } from 'vue' import App from './App.vue' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' import axios from 'axios' const app = createApp(App) app.use(ElementPlus) app.config.globalProperties.$axios = axios app.mount('#app') ``` 3. 封装Axios请求: ```javascript import axios from 'axios' // 创建axios实例 const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // api的base_url timeout: 5000, // 请求超时时间 headers: { 'Content-Type': 'application/json;charset=UTF-8', }, }) // request拦截器 service.interceptors.request.use( (config) => { // 在发送请求之前做些什么 return config }, (error) => { // 对请求错误做些什么 console.log(error) // for debug Promise.reject(error) } ) // response拦截器 service.interceptors.response.use( (response) => { // 对响应数据做点什么 const res = response.data if (res.code !== 0) { // 根据后端返回的错误码,做相应的处理 // ... return Promise.reject('error') } else { return res } }, (error) => { // 对响应错误做点什么 console.log('err' + error) // for debug // 根据后端返回的错误码,做相应的处理 // ... return Promise.reject(error) } ) export default service ``` 4. 在组件中使用: ```javascript import { reactive } from 'vue' import axios from '@/utils/request' export default { setup() { const state = reactive({ data: [], }) const fetchData = () => { axios.get('/api/data').then((res) => { state.data = res.data }) } return { state, fetchData, } } } ``` 以上是Vue3.0使用Element Plus和Axios封装示例。需要注意的是,Axios请求拦截器和响应拦截器中的错误处理部分需要根据实际情况进行修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值