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看下一节。


本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):