好久不见,终于我又开始写博客了!
最近在研究vue3和ts,准备重构一个vue2的工程。
vue3+ts的工程已经搭建好了,现在开始封装axios。
1、先在src目录下新建一个api文件夹,新建文件http.ts。
2、在项目中安装axios
npm i axios
3、实现axios封装,分为4步。
1)引入axios,创建axios实例
2)请求拦截
3)响应拦截
4)暴露实例
import axios, { AxiosResponse } from 'axios'
const api = axios.create({
baseURL: 'http://localhost:5000/api/',
timeout: 5000,
headers: {
"Content-type": 'application/json;charset:utf-8'
}
}
)
//请求拦截
api.interceptors.request.use((config: any) => {
if (localStorage.getItem('token')) {
config.headers.token = localStorage.getItem('token') || ''
}
return config
})
//响应拦截
api.interceptors.response.use((res: any) => {
const msg = res.msg || ''
const result = res.data || {}
if (msg === 'success') {
return result
} else {
return Promise.reject(res.data)
}
}, (err) => {
console.error(err)
})
export default api;