这章简单讲解如何在 npm 项目里使用,并封装,下一章将会讲到如何配合 ts 使用,并进一步封装一些功能。
废话不多说,直接上代码:
axios.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| import axios from 'axios'
import { Message, MessageBox } from 'element-ui'
import router from '@/router'
const instance = axios.create({ baseURL: 'http://api-server.com', timeout: 5 * 1000, })
const LOGIN_TIMEOUT = 403 const NO_LOGIN = 401
const errMessage = (err) => { if (err.response) { const data = err.response.data const token = localStorage.getItem('ACCESS_TOKEN')
if (err.response.status === LOGIN_TIMEOUT) { Message.error('您的登录状态已经过时了,请重新登陆!') } if (err.response.status >= 500) { if (data.message.length > 0) { Message.error(data.message) } } if (err.response.status === NO_LOGIN) { Message.error('您还未登录!') } } return Promise.reject(err) }
instance.interceptors.request.use(config => { const token = localStorage.getItem('ACCESS_TOKEN') if (token) { config.headers['Authorization'] = 'Bearer ' + token } return config }, errMessage)
instance.interceptors.response.use((response) => { if (response.request.responseType === 'blob') { return response }
const code = response.data.code if (code === LOGIN_TIMEOUT || code === NO_LOGIN) { localStorage.clear() router.replace({ name: Login, query: { redirect: router.currentRoute.value.fullPath, }, }) } else if (code === xxx ) { message.error(response.data.message) return response.data } else { return response.data } }, errMessage)
export default instance
|
这样基本的 axios 就封装好了,下面演示如何封装成一些方法并使用。
api.js1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import axios from 'axios.js'
export function list(parameter) { return axios({ url: '/user/list', method: 'get', params: parameter, }) }
export function add(parameter) { return axios({ url: '/user/add', method: 'post', data: parameter, }) }
|
使用:
MainPage.vue1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <script> import { add as AddUser, list as UserList } from 'api.js'
export default { data() { return { userForm: { username: '', password: '' } } } methods: { async getUserList(params) { const res = await UserList(params) console.log(res) }, async addNewUser(info) { const res = await AddUser(info) console.log(res) } } }
</script>
|
如上,就是本章的主要内容,下一章讲解如果配合ts使用,并实现更丰富一点的功能(实际上也没多多少功能)。