axios的封装与请求
引入下axios,然后对axios做下基本的封装。然后就是mock数据的方式说一下,以及在项目中使用的mock方式。
1、安装
axios是什么就不说了吧,你应该已经很熟了,就直接安装吧。
$ npm install axios --save
2、axios封装
然后我们简单的在src/utils/request.js中简单的进行了一下axios封装。
import axios from 'axios'
import { Toast, Dialog } from 'vant'
// 创建一个axios实例
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
// withCredentials: true,
timeout: 5000
})
// 请求拦截器
service.interceptors.request.use(
config => {
// 这里做些发送请求前的事情
return config
},
error => {
console.log(error)
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
response => {
const res = response.data
// 与后端约定的错误码
if (res.code !== 200) {
Toast.fail(res.message)
return Promise.reject(new Error(res.message || 'Error'))
} else {
return res
}
},
error => {
console.log('err' + error)
Toast.fail(error.message)
return Promise.reject(error)
}
)
export default service
对于环境的不同判断,比如开发环境、灰度环境、线上环境等等在@vue/cli3.x中通过新建一个.env.[xxx]的文件来维护-->环境变量和模式
比如说我们上文中的axios实例中的baseURL:process.env.VUE_APP_BASE_API,取的就是不同环境下的所定义的值。
// .env.development
# base api
VUE_APP_BASE_API = '/dev-api'
// .env.production
# base api
VUE_APP_BASE_API = '/prod-api'
3、使用
以我们首页中获取banner数据为例(关于数据mock请浏览下一节内容),首先我们新建了一个src/api文件夹用于维护接口,在该文件夹下定义了一个getBanner请求方法:
import request from '@/utils/request'
export function getBanner() {
return request({
url: '/home/banner',
method: 'get'
})
}
然后我们在首页home.vue中引入并使用它:
import { getBanner } from '@/api/home'
getBanner() {
getBanner().then(res => {
this.banner = res.entry
})
}
这就是axios从安装、到封装、到api接口维护、到请求的一个大体的流程了。
关于数据的mock看下一节。
发表评论 (审核通过后显示评论):