在现在的前端开发中,前后端分离开发比较主流,所以在封装方法和模块化上也是非常需要掌握的一门技巧。axios的二次封装,可以帮助我们更好的管理api接口和使用。那么如何对axios进行二次封装呢?
第一步 配置axios
创建一个request.js,在request中引入axios,创建axios实例,设置请求地址和超时时间,添加拦截器, 最后导出一个axios对象,我们也可以运用第三方组件库
import axios from 'axios'
import { Message, Loading } from 'element-ui'
const ConfigBaseURL = 'https://localhost:3000/' //默认路径,这里也可以使用env来判断环境
let loadingInstance = null //这里是loading
//使用create方法创建axios实例
export const Service = axios.create({
timeout: 7000, // 请求超时时间
baseURL: ConfigBaseURL,
method: 'post',
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
// 添加请求拦截器
Service.interceptors.request.use(config => {
loadingInstance = Loading.service({
lock: true,
text: 'loading...'
})
return config
})
// 添加响应拦截器
Service.interceptors.response.use(response => {
loadingInstance.close()
// console.log(response)
return response.data
}, error => {
console.log('TCL: error', error)
const msg = error.Message !== undefined ? error.Message : ''
Message({
message: '网络错误' + msg,
type: 'error',
duration: 3 * 1000
})
loadingInstance.close()
return Promise.reject(error)
})
第二步 封装请求
创建一个test.js
export function getConfigsByProductId(productId) {
return Service({
url: '/manager/getConfigsByProductId',
params: { productId: productId }
})
}
export function getAllAndroidPlugins() {
return Service({
url: '/manager/getAndroidPlugin ',
method: 'get'
})
}
export function addNewAndroidPlugin(data) {
return Service({
url: '/manager/addAndroidPlguin',
data: JSON.stringify(data)
})
}
第三步 使用
在组件中引入并使用
import {getAllAndroidPlugins,getConfigsByProductId,addNewAndroidPlugin} from '@/api/request.js'
getAllAndroidPlugins()
.then(res=>{
})
全局要在main.js中
import {Service} from '@/api/Service.js'
Vue.prototype.$axios=Service