别看了,写的就是垃圾,后续一点都不好用

  1. 下载axios

npm install axios --save

  1. 区分开发环境和生产环境
    1)根目录下创建.env.development文件配置开发环境。
NODE_ENV="development";
VUE_APP_URL = '/api'
VUE_APP_URL_TWO = ''
VUE_APP_URL_THREE = ''

此文件里面的变量必须以VUE_APP开头,一句话结尾不能有分号以及任何注释,不然会解析失败,变成这样:

可声明多个接口公共路径
此处公共路径设置成 /api 是为了解决跨域,在下面再说。
2)根目录下创建.env.production文件配置生产环境。

NODE_ENV='production'
VUE_APP_URL='生产环境的接口公共路径'
VUE_APP_URL_TWO = ''
VUE_APP_URL_THREE = ''

内容限制同.env.development

  1. 封装公共axios
    在src目录下创建utils目录,再创建http.js文件,名字自己取,无所谓。
    关于process.env.VUE_APP_URL的问题:
          在生产环境下会自动读取.env.developement内的数据,打包的时候会自动读取.env.production内的数据。
import axios from 'axios';
const http = axios.create({baseURL: process.env.VUE_APP_URL,timeout: 30000
})
//请求拦截,在每个请求发出去之前,针对每个域名做不同的配置
http.interceptors.request.use(config => {if (config.requestBase == 'VUE_APP_URL') {config.headers['Content-Type'] = "application/x-www-form-urlencoded";} else if (config.requestBase == 'VUE_APP_URL_TWO') {config.headers['Content-Type'] = "application/json";config.baseURL = process.env.VUE_APP_URL_TWO;config.data = JSON.stringify(config.data);} else if (config.requestBase == 'VUE_APP_URL_THREE') {config.baseURL = process.env.VUE_APP_URL_THREE;}return config;}, error => Promise.error(error))// 响应拦截器
http.interceptors.response.use(// 请求成功res => (res.status === 200 ? Promise.resolve(res) : Promise.reject(res)),// 请求失败error => {const {response} = error;if (response) {return Promise.reject(response);} else {// 处理断网的情况// eg:请求超时或断网时,更新state的network状态// network状态在app.vue中控制着一个全局的断网提示组件的显示隐藏// 关于断网组件中的刷新重新获取数据,会在断网组件中说明// store.commit('changeNetwork', false);}}
);
export default http;
  1. 模块化接口
    在src目录下创建一个新目录为api,api目录下创建index.js

    先不管index.js里面是什么,在api下创建一个新的js文件,比如你和用户有关的接口user.js

    下载qs,用做给post请求的参数做一个序列化。

npm install qs --save

user.js
import http from '@utils/http';
import qs from 'qs';
const user = {// 登录login(data) {let params = {method: 'post',url: '/index/Login/engineer',requestBase: 'VUE_BASE_URL',data: qs.stringify(data)}return http(params);},// 详细信息info(data) {let params = {method: 'post',url: '/index/Engineer/info',requestBase: 'VUE_BASE_URL',data: qs.stringify(data)}return http(params);},// 其他接口......
}
export default user;

再来看index.js里面的内容

// 引入其他模块的接口
import user from '@api/user';// 导出接口
export default {user,// ......
}

get请求封装方式:

detail(data) {let params = {method: 'get',url: '/index/protocol/detail',requestBase: 'VUE_BASE_URL',params: data}return http(params);
}
  1. 将接口注入到vue的原型上。
main.js
import api from '@api';
Vue.prototype.$api = api;
  1. 解决本地访问跨域
vue.config.js
module.exports = {devServer: {proxy: {// 这个就是之前在.env.developement的VUE_APP_URL设置的,这两个得一样'/api': {target: '你的后台接口开发环境公共路径',secure: false,   // https需要这个changeOrigin: true, // 是否允许跨域pathRewrite: {'^/api': ''  // 给变量名重命名}},// 若存在多个访问接口时继续往后面加}}
}
  1. 使用
this.$api.user.login({phone: this.phone, password: this.pwd}).then(res => {let data = res.data;if(data.code === 2000) {alert('登录成功');}
})

参考文章:
vue-cli本地环境API代理设置和解决跨域
vue cli4配置多个baseUrl环境,axios涉及多个请求域的情况

uni-app封装axios相关推荐

  1. 使用async await 封装 axios

    es6 的promise 逐步解决了层层回调的问题,es8的async await让异步变成了同步的写法,在vue中,可以通过封装axios,使得所有的请求都可以使用同步写法,同时处理错误信息等,可以 ...

  2. get request uni 参数_uni-app 环境配置,uni.request封装,接口配置,全局配置,接口调用的封装...

    1.环境配置 (可参考uni-官网的环境配置) common文件夹下新建config.js let url_config = "" if(process.env.NODE_ENV ...

  3. Vue二次封装axios为插件使用

    照例先贴上 axios 的 gitHub 地址 不管用什么方式获取数据,对于一个项目来说,代码一定要利于维护其次是一定要写的优美,因此加上一层封装是必要的 vuejs2.0 已经不再维护 vue-re ...

  4. vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex

    阅读目录 Vue如何封装Axios请求 1 安装axios 2 封装代码 axios 应用方式 Vue 中的路由守卫 使用演示 1 全局守卫 2 组件级守卫 3 单个路由独享的守卫 4 官网整个路由守 ...

  5. uni app 开发微信小程序及上线体验

    uni app 开发微信小程序及上线体验 项目创建及微信小程序AppId的申请 本次开发的是电商类的微信小程序,这里用到的是HBuilderX这个编辑器.之前用的Visual Studio Code ...

  6. 在项目中用ts封装axios

    写在前面 虽然说Fetch API已经使用率已经非常的高了,但是在一些老的浏览器还是不支持的,而且axios仍然每周都保持2000多万的下载量,这就说明了axios仍然存在不可撼动的地位,接下来我们就 ...

  7. 封装axios加载动画Loding——vuex+axios拦截器

    封装axios加载动画Loding--vuex+axios拦截器 前言:我们在axios发送请求时候,会存在请求等待时长,我们一般会加一个动画,如果很多个时候一个一个的加动画代码看起来很臃肿很冗余,我 ...

  8. springboot + vue 后台token生成 拦截器 redis实现 前台封装axios xueX 接口实现

    后台 后台程序图片 新建token的基础类 public class Constants {public final static String TOKEN = "token";} ...

  9. Vue实现登录功能全套详解(含封装axios)

    目录 Vue项目中实现登录大致思路: 用到的关键文件 一.安装插件 二.创建store 三.封装axios qs vue 插件 api.js的作用 四.路由拦截 五.登录页面实际使用 Vue项目中实现 ...

  10. vite + vue3 + 封装axios + 封装loading + 封装返回顶部

    前言 ​前期回顾    ​ vite + vue3 + ts配置<企业级项目>二次封装el-table.分页_0.活在风浪里的博客-CSDN博客封装的功能有哪些?分页.表格排序.文字居中. ...

最新文章

  1. 人生致命的8个经典问题[转]
  2. ITK:将图像粘贴到另一个
  3. 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)
  4. 本地搭建WordPress (XAMPP环境)
  5. Java方法的反射(对反射的进一步认识)
  6. MonoRail学习笔记十八:在VM中可以使用哪些系统变量
  7. 【英语学习】【WOTD】nomothetic 释义/词源/示例
  8. Redis安装及HA(High Availability)配置
  9. Mac快速备忘录开启与关闭设置方法
  10. nyoj 114某种排序(水 大数+优化大数)
  11. OpenCV从源码安装到Ubuntu16.04
  12. linux添加phoenix引导,Phoenix OS安装方法
  13. 【百度一键分享功能】百度一键分享插件
  14. 一位 19 年 Mac 用户的心声:“我真的很讨厌库克”
  15. linux中时间转换date
  16. Win10下用SCP命令免密码上传、下载阿里云服务器上的文件
  17. 接单日记(三)文本处理之词云生成
  18. [渝粤教育] 西安邮电大学 成本会计学 参考 资料
  19. jt2go嵌入html控件,JT2Go(JT文件阅读器) 免费版v11.2
  20. python excel转csv两列互换,python excel转换csv代码实例

热门文章

  1. ADSL拨号中错误代码解决办法
  2. C# TreeView 控件的综合使用方法
  3. 724便利店系统完整项目及讲解
  4. 三星+android+u盘模式,三星手机usb存储器如何连接电脑的【详解】
  5. 专业的硬盘数据迁移克隆工具——易我分区大师
  6. 智慧农业,数字农业经济效益,社会,经济,生态,运行
  7. vue中60余种工具类
  8. pdf转换器免费注册码
  9. carbide.c++ 如何生成sisx文件
  10. 输入一个字符,判断它是否为大写字母,如果是,将它转换为小写字母,不是则不转换