说明:
最近在搭建一个前端使用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. openssl查看证书命令

    openssl x509部分命令打印出证书的内容:openssl x509 -in cert.pem -noout -text打印出证书的系列号openssl x509 -in cert.pem -n ...

  2. MySQL 中删除的数据都去哪儿了?

    不知道大家有没有想过下面这件事? 我们平时调用 DELETE 在 MySQL 中删除的数据都去哪儿了? 这还用问吗?当然是被删除了啊 那么这里又有个新的问题了,如果在 InnoDB 下,多事务并发的情 ...

  3. MySQL Schema 与数据类型优化

    良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema,这往往需要权衡各种因素. 例如,反范式的设计可以加快某些类型的查询,但同时可能使另一些类型的查询变慢:添加计数 ...

  4. 一专属SRC - XSS - Bypass长亭Waf

    bypass是预言表哥绕的,擦,我这篮子玩xss什么都绕不过 https://www.cnblogs.com/yuyan-sec 这博客我直接倒背如流 主要记录下这次挖掘的过程 先说下 bypass姿 ...

  5. WPF listbox 实现动态滚轮下拉定位

    private ObservableCollection<keymodel> _listlua; public ObservableCollection<keymodel> l ...

  6. Jackson格式化时间和科学计数法问题

    1. 首先如果有自定义   WebMvcConfigurer 或者 WebMvcConfigurationSupport 的,一定不要在上面加 @EnableWebMvc 注解,因为这个注解会覆盖掉s ...

  7. Spring系列之HikariCP连接池

    上两篇文章,我们讲到了Spring中如何配置单数据源和多数据源,配置数据源的时候,连接池有很多选择,在SpringBoot 1.0中使用的是Tomcat的DataSource,在SpringBoot ...

  8. kubebuilder实战之三:基础知识速览

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Centos7 出现Welcome to emergency mode!【紧急模式】

    Centos7 出现Welcome to emergency mode![紧急模式] 做mount挂载时,修改了  /etc/fstab 文件,导致Centos7重启时出现如下图所示错误:   输入r ...

  10. reduce使用技巧

    一.使用reduce同时执行map(循环)和filter(过滤) 例如,将数组中的项的值加倍,然后只选择那些大于50的项 const numbers = [10, 20, 30, 40]; const ...