前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue中axios的封装

vue中axios的封装

作者头像
用户9914333
发布2022-07-21 20:07:44
1.2K0
发布2022-07-21 20:07:44
举报
文章被收录于专栏:bug收集bug收集

01

axios需要进行一些什么配置

1. 设置请求的默认地址baseUrl

2. 设置请求超时时间

3. Post请求头的设置

4. 拦截器(请求拦截与响应拦截)

5. 封装post, get 请求 (此示例没有封装,可根据项目情况而定,因为封装后,对于一些特殊接口设置不是太灵活,需要我们项目没有选择封装,如果请求方法比较单一的,可以考虑封装)

02

axios完整封装代码

我们可以将上面的都封装成一个文件axios.js放在util文件夹中

代码如下:

代码语言:javascript
复制
import axios from 'axios'
const ConfigBaseURL = 'https://localhost:3000/'

// 使用create方法创建axios实例
const Service = axios.create({
  baseURL: ConfigBaseURL, //1. 设置默认地址
  timeout: 7000 // 2. 请求超时时间

})

//3. 给POST请求添加请求头设置(不同项目,值不一样)
Service.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';

//4.1 添加请求拦截器
Service.interceptors.request.use(config => {
  loadingInstance = Loading.service({
    lock: true,
    text: 'loading...'
  })
  return config
})

//4.2 添加响应拦截器
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)
})

03

引用封装的文件

main.js中引用,代码如下:

代码语言:javascript
复制
import axios from './util/axios.js'
Vue.prototype.$axios = axios ;

引用后,直接使用 this.$axios.get 或 this.$axios.post 即可发起请求

疑问

baseURL写死在文件中,如果打包后,想更改地址,就有问题了,如何解决这个问题,下篇文章再讨论

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档