这里分享出我个人封装的一个axios,我会尽量每行注释,希望对大家有所帮助。
1. 安装
全局执行代码
npm install axios;

2. 编写全局axios文件(附件里有代码)
在src目录中创建一个axios目录,里面创建一个index.js文件

写上全局index.js代码
import axios from 'axios'
const methodType = 'get' | 'post' | 'delete' | 'put'
const DataParamsMethod = ['post', 'delete', 'put']
export class Http {
header
httpOpts
constructor() {
this.header = {}
this.httpOpts = {
method: 'get',
noHandleError: false,
noHandle401: false,
noHandle403: false,
noHandle500: false
}
}
get(url, data = {}, opts={}) {
opts.method = 'get'
return this.request(url, data, opts)
}
post(url, data = {}, opts={}) {
opts.method = 'post'
return this.request(url, data, opts)
}
request(url, data = {}, opts={}) {
opts = { ...this.httpOpts, ...opts }
const contentType = 'application/json'
return new Promise((resolve, reject) => {
const method = opts.method || 'get'
void axios({
url,
baseURL: process.env.baseURL || process.env.apiUrl || 'https://static.popodv.com',
data: data ? data : {},
params: opts.method === 'get' ? data : {},
timeout: 60 * 1000,
headers: {
...this.header,
'content-type': contentType
},
method
})
.then((res) => {
if (res.status === 200) {
return resolve(res.data)
} else if (res.status === 500) {
return resolve(res.data)
}
})
.catch(err => {
return reject(err)
})
})
}
}
3. 编写api文件
在src目录中创建一个api目录,里面创建一个index.js文件

写上各个接口的访问代码
import { Http } from '@/axios/index.js'
const axios = new Http()
export function getTest () {
return axios.get('/data/attr/gfs.json')
}
export function postTest (name) {
return axios.post('https://static.popodv.com/data/attr/gfs.json',{
name:name
})
}
4. 页面引用
页面上引入
import {getTest} from '@/api/index.js'
调用代码
async mounted() {
const res = await getTest();
if(res.status == 200){
console.log(res.data)
}
}
效果图:

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。
