作者:sdfqw4543gf | 来源:互联网 | 2023-09-07 16:24
1、需求说明
在使用Vue.js框架开发前端项目时,会经常发送ajax请求服务端接口,在开发过程中,需要对axios进一步封装,方便在项目中的使用。
2、Vue项目结构
在本地创建Vue项目,目录结构如下:
- public 静态资源文件- src|- assets 静态资源目录|- components 公共组件目录|- http axios封装目录|- router 路由管理目录|- store 状态管理目录|- views 视图组件目录|- App.vue 根组件|- main.js 入口文件- package.json npm配置文件
在Vue项目中创建 http目录
作为axios的管理目录,在 http目录
下两个文件,分别是
- /http/index.js 封装axios方法的文件
- /http/api.js 统一管理接口的文件
3、代码示例
/http/api.js文件代码如下:
export default {'users_add': '/users/add','users_find': '/users/find','users_update': '/users/update','users_delete': '/users/delete'
}
/http/index.js文件代码如下:
import axios from 'axios'
import api from './api'
let instance = axios.create({baseURL: 'http://localhost:3000', timeout: 5000
})
instance.interceptors.request.use(config=>{console.log('正在请求……')return config
},err=>{console.error('请求失败',err)
})
instance.interceptors.response.use(res=>{console.log('请求成功!')return res
},err=>{console.log('响应失败!',err)
})
async function http(option = {}) {let result = nullif(option.method === 'get' || option.method === 'delete'){await instance[option.method](api[option.url],{params: option.params}).then(res=>{result = res.data}).catch(err=>{result = err})}else if(option.method === 'post' || option.method === 'put'){await instance[option.method](api[option.url],option.params).then(res=>{result = res.data}).catch(err=>{result = err})}return result
}export default http
在main.js入口文件中引入封装好的 /http/index.js 文件,示例代码如下:
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import http from './http'Vue.config.productionTip = false
Vue.prototype.$http = httpVue.use(Elementui)new Vue({router,store,render: h => h(App)
}).$mount('#app')
在App.vue根组件中测试axios请求,示例代码如下:
<template><div><button &#64;click&#61;"getDate">发送请求</el-button></div>
</template><script>
export default {methods: {getDate(){this.$http({method: &#39;get&#39;,url: &#39;users_find&#39;}).then(res&#61;>{console.log(res)})}}
}
</script>
这里需要有 http://localhost:3000/users/find 接口&#xff0c;不然请求会失败&#xff01;
4、效果演示
启动Vue项目&#xff0c;在浏览器中访问Vue项目的地址&#xff0c;我的地址是 http://localhost:8080&#xff0c;点击按钮发送请求&#xff0c;获取的结果如下图所示。
到此&#xff0c;在Vue项目中就完成了简单的axios封装&#xff0c;你也可以根据自己的实际需求对axios进行封装&#xff0c;本文只是提供参考。