千家信息网

怎么用vue实现axios的二次封装

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了怎么用vue实现axios的二次封装的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用vue实现axios的二次封装文章都会有所收获,下面我们一起来看
千家信息网最后更新 2026年11月03日怎么用vue实现axios的二次封装

这篇文章主要介绍了怎么用vue实现axios的二次封装的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用vue实现axios的二次封装文章都会有所收获,下面我们一起来看看吧。

定义公共参数与引入组件:

import axios from 'axios'import qs from 'qs' axios.interceptors.request.use(config => {  //显示loading return config}, error => { return Promise.reject(error)})  axios.interceptors.response.use(response => { return response}, error => { return Promise.resolve(error.response)}) function errorState(response) {  //隐藏loading console.log(response) // 如果http状态码正常,则直接返回数据 if (response && (response.status === 200 || response.status === 304 || response.status === 400)) {  return response   // 如果不需要除了data之外的数据,可以直接 return response.data }else{  Vue.prototype.$msg.alert.show({      title: '提示',      content: '网络异常'  }) } } function successState(res) {  //隐藏loading //统一判断后端返回的错误码 if(res.data.errCode == '000002'){    Vue.prototype.$msg.alert.show({      title: '提示',      content: res.data.errDesc||'网络异常',      onShow () {      },      onHide () {       console.log('确定')      }    }) }else if(res.data.errCode != '000002'&&res.data.errCode != '000000') {   Vue.prototype.$msg.alert.show({      title: '提示',      content: res.data.errDesc||'网络异常',      onShow () {       },      onHide () {       console.log('确定')      }    }) }}const httpServer = (opts, data) => {   let Public = { //公共参数   'srAppid': ""  }   let httpDefaultOpts = { //http默认配置     method:opts.method,     baseURL,     url: opts.url,     timeout: 10000,     params:Object.assign(Public, data),     data:qs.stringify(Object.assign(Public, data)),     headers: opts.method=='get'?{      'X-Requested-With': 'XMLHttpRequest',      "Accept": "application/json",      "Content-Type": "application/json; charset=UTF-8"     }:{      'X-Requested-With': 'XMLHttpRequest',      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'     }  }   if(opts.method=='get'){   delete httpDefaultOpts.data  }else{   delete httpDefaultOpts.params  }    let promise = new Promise(function(resolve, reject) {   axios(httpDefaultOpts).then(    (res) => {     successState(res)     resolve(res)    }   ).catch(    (response) => {     errorState(response)     reject(response)    }   )   }) return promise} export default httpServer

封装理由:

1、可以和后端商量好错误码在这统一提示统一处理,省去不必要的麻烦

2、如果做接口全报文加解密都可以在此处理

接口统一归类:

const serviceModule = { getLocation: {  url: ' service/location/transfor',  method: 'get' }}const ApiSetting = {...serviceModule } export default ApiSetting

归类好处:

1、后期接口升级或者接口名更改便于维护

http调用:

关于"怎么用vue实现axios的二次封装"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么用vue实现axios的二次封装"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0