说明:
最近在搭建一个前端使用vue-element-admin,后端使用springBoot的项目。
由于vue-element-admin使用的是mock的模拟数据跑起来的项目,所以在开发过程中难免会遇到mock和真实数据之间的混合使用,既要原先的项目跑起来,也要真实接口数据可以使用
解决方案:
在github上vue-element-admin有issues这个就方便多了,我想上面肯定有人也遇到我这种问题,就直接在上面搜索问题,结果还真有,下,我贴一段上面的大佬对于这个问题的描述:

mock-server就是一个web server,默认监听在9528端口(可能是vue-cli-service反代理把请求转发给mock-server的),并没有改写xhr对象的请求方法,因此不会对请求作拦截。可以帮它当做一个单独的web server,只不过它会随着vue-cli-service启动。

假定你的环境变量VUE_APP_BASE_API的值是http://foo.bar.com/api,如果是默认的mock数据的话,那么mock-server生成的资源会是这样的格式http://localhost:9528/http://foo.bar.com/api/vue-admin-template/user/login。参考mock-server.js

以上说到,mock-server不会拦截请求,实际的请求还是会发给http://foo.bar.com/api/vue-admin-template/user/login,因此是不能通过mock-server实现这个需求的。
PS:当VUE_APP_BASE_API/dev-api这样不包含协议和主机名的值时,请求发给同域的web server了,即http://localhost:9528,刚好是mock-server的服务。

要实现同时使用mock和真实api,有两种方案:

  1. 多个server,参考:vue从mock数据过渡到使用后台接口   https://www.cnblogs.com/xiayuscc/p/11063590.html
    真实的api也可以当做一个mock server,通过配置proxy规则来实现
  2. 启用纯前端mock
    修改xhr对象,拦截请求。符合mock规则的请求直接走mock
 
两个方法我都实验了一下,原理上都可行,问题在于什么时候走真实数据,什么时候走mock数据,第一个方法:他采用的是辨别mock接口的url,我好像怎么用都不行,最后结果是mock和接口都调不通了,不知道哪里出的问题,第二个方法:启用纯前端的mock,然后我就去了vue-element-admin的官方文档上研究了一下,感觉和方法一差不多,一样的结果.mock和接口都跑不了,
后来没办法,疯狂百度看各路大佬的解决方案,出奇的一致百分之90都是百度到这种方法,剩下百分之10什么妖魔鬼怪都出来了0.0
最后总结没办法一点一点尝试,发现是before属性和after属性搞的鬼,我最后的方案是采用的before,在默认情况下使用before调用mock数据,如果找不到数据时跑接口数据代码如下(打双引号的都是前人大佬的方法,弟弟跑不通,索性留着以后还可以再研究0.0)
 
devServer: {
    port: port, // 访问端口号
    open: true, // 编译完成打开网页
    host: '0.0.0.0', // 指定使用地址,默认localhost,0.0.0.0代表可以被外界访问
    overlay: {
      warnings: false,
      errors: true
    },
    before: require('./mock/mock-server.js'),
    proxy: {
      // change xxx-api/login => mock/login
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      // [process.env.VUE_APP_BASE_API + '/user/login']: {
      //   target: `http://localhost:${port}/`,
      //   changeOrigin: true,
      //   pathRewrite: {
      //     ['^' + process.env.VUE_APP_BASE_API]: ''
      //   }
      // },
      // change xxx-api/login => mock/login
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        // target: `http://localhost:${port}/mock`,
        target: 'http://192.168.1.117:9090/',
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    }
    // after: require('./mock/mock-server.js')
    // before: require('./mock/mock-server.js')
  },
 
总结下来就是vue配置真难!!!!
 
愿所有前端的头发都被善待
 
 
 

vue从mock数据过渡到使用后台接口的更多相关文章

  1. vue admin mock数据

    搭建脚手架axios访问不到接口:mock数据的问题mock下的index.js设置了默认指向

  2. thinkjs学习-this.assign传递数据和ajax调用后台接口

    在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...

  3. 深入浅出的webpack4构建工具--webpack4+vue+vuex+mock模拟后台数据(十九)

    mock的官网文档 mock官网 关于mockjs的优点,官网这样描述它:1)可以前后端分离.2)增加单元测试的真实性(通过随机数据,模拟各种场景).3)开发无侵入(不需要修改既有代码,就可以拦截 A ...

  4. Vue CLI 3.0脚手架如何在本地配置mock数据

    前后端分离的开发模式已经是目前前端的主流模式,至于为什么会前后端分离的开发我们就不做过多的阐述,既然是前后端分离的模式开发肯定是离不开前端的数据模拟阶段. 我们在开发的过程中,由于后台接口的没有完成或 ...

  5. mock数据(模拟后台数据)

    mock数据(模拟后台数据) - Emily恩 - 博客园 https://www.cnblogs.com/enboke/p/vue.html Mock.js http://mockjs.com/ 前 ...

  6. vue 项目初始化、mock数据以及安装less

    vue 创建一个项目 1.首先建立一个空文件夹,然后将这个文件夹要放到码云或者其他代码管理平台. 例如码云: 在码云上建立一个项目,然后在控制台进入这文件夹执行 git clone 地址是码云上创建的 ...

  7. vue项目中使用mockjs+axios模拟后台数据返回

    自己写练手项目的时候常常会遇到一个问题,没有后台接口,获取数据总是很麻烦,于是在网上找了下,发现一个挺好用的模拟后台接口数据的工具:mockjs.现在把自己在项目中使用的方法贴出来   先看下项目的目 ...

  8. 【vue】本地开发mock数据支持

    项目离不开数据渲染的支持,为本地开发配置 数据  支持. (一)方式一:安装JSON Server搭建mock数据的服务器 json Server 是一个创建 伪RESTful服务器的工具. 配置流程 ...

  9. 基于Vue开发的门户网站展示和后台数据管理系统

    基于Vue的前端框架有很多,这几年随着前端技术的官方应用,总有是学不完的前端知识在等着我们,一个人的精力也是有限,不可能一一掌握,不过我们学习很大程度都会靠兴趣驱动,或者目标导向,最终是可以以点破面, ...

随机推荐

  1. testlink在win7下的安装\配置\使用

    1.xampp >解压并安装xampp >在安装目录下点击setup_xampp(这一步是为了初始化一些环境的配置) >再启动xampp-control,运行Apache和MySQL ...

  2. C++ 结构体+数组+取随机数 案例(打印3名老师 带着 5名学生)结构体

    1 //结构体案列 2 3 #include<iostream> 4 #include<string> 5 #include<ctime> 6 using name ...

  3. 阿里面试官:Android中binder机制的实现原理及过程?

    Binder 是 Android 系统中非常重要的组成部分.Android 系统中的许多功能建立在 Binder 机制之上.在这篇文章中,我们会对 Android 中的 Binder 在系统架构中的作 ...

  4. 利用VAR模型科学管理仓位,提升策略效率

    更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 期货行情瞬息万变,保证金体系决定了期货交易的杠杆属性.保证金放多了,资金利用率低,放少了,可能在大幅度的 ...

  5. NOIP 模拟 $24\; \rm graph$

    题解 \(by\;zj\varphi\) 首先一个点能否选择的条件是 \(dis_{1,x}+dis_{x,n}=dis_{1,n}\) 正解是计算一条道路上的所有为 \(-1\) 边的选择范围,是个 ...

  6. 【springcloud alibaba】注册中心之nacos

    1.为什么需要注册中心 1.1 没有注册中心会怎么样 1.2 注册中心提供什么功能以及解决什么问题 2.常用的微服务注册中心对比 3.案例项目父工程 4.nacos作为注册中心的使用 4.1 单机版的 ...

  7. mysql开启远程访问权限的设置

    MySql-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问. 所以必须给root修改可以远程访问的权限 1.在连接服务器后,操作mysql系统数据库 ...

  8. c++本地动态连接库代码

    c++本地动态连接库代码 1 #pragma once 2 #include "stdafx.h" 3 4 #ifdef PERSON_EXPORTS 5 #define PERS ...

  9. 深入浅出Mybatis系列(七)---TypeHandler简介

    无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成 Java 类型.Mybatis默认 ...

  10. 刷题-力扣-122. 买卖股票的最佳时机 II

    122. 买卖股票的最佳时机 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell ...