公司項目使用了vue作為技術棧,便理所應當地使用了官方推薦的axios進行網絡請求,這里記錄下axios的封裝方法,以備以后也能優雅的使用。
ajax.js:
/*引入axios*/
import axios from 'axios'
/*創建axios實例對象*/
const ajax = axios.create({
baseURL: ajaxUrl,
timeout: 30000
})
/*請求攔截器(請求之前的操作)*/
ajax.interceptors.request.use(
config => {
return config
},
/*錯誤操作*/
err => {
return Promise.reject(err)
}
)
/*請求之后的操作*/
ajax.interceptors.response.use(
config => {
return config
},
err => {
return Promise.reject(err)
})
/*導出模塊*/
export default ajax
api.js:
import ajax from '../libs/ajax'
const captcha = () => {
return ajax.get(`app/captcha`)
}
const login = (params) => {
return ajax.post(`auth/login`, params)
}
const apiList = {
captcha,
login
}
export default apiList
index.js:
將導出的api請求掛在到vue原型上
import apiList from './api'
const install = function (Vue) {
if (install.installed) return
install.installed = true
/*定義屬性到Vue原型中*/
Object.defineProperties(Vue.prototype, {
$api: {
get () {
return apiList
}
}
})
}
export default {
install
}
main.js:
/*引入index.js*/
import api from '.xxx'
Vue.use(api)
按以上模板進行封裝之后,就可以在需要的地方直接發起api請求了,如下:
this.$api.login(params).then(res => {
/*請求成功后的操作*/
}).catch(err => {
/*請求失敗后的操作*/
})