说明:
最近在搭建一个前端使用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. 建立安全SSL连接PostgreSQL数据库服务器

    建立安全SSL连接PostgreSQL数据库服务器当前物联网的挑战之一就是提供最高的安全级别.这就是为什么需要开启SSL连接到 PostgreSQL. 当你想要安全的存储数据到PostgreSQL数据 ...

  2. Python中input()函数用法

    input()函数获取用户输入数据,实现用户交互 语法格式: 变量 = input("提示信息") input()返回的是字符串,无论输入的是数字还是字符串,默认的输入结束键是回车 ...

  3. Java知识复习回顾

    1.MVC 三层架构: M:Model 数据模型层 V:View 视图层 C:Controller控制器层 目的:解耦 2.Spring Spring:轻量级的Java开源框架,容器,目的是解决企业级 ...

  4. ElasticSearch版本控制--java实现

    一.前言 最近工作中有这样一个ElasticSearch(以下简称ES)写入的场景,Flink处理完数据实时写入ES.现在需要将一批历史数据通过Flink加载到到ES,有两个点需要保证: 对于历史数据 ...

  5. JavaScript学习06(操作BOM和表单)

    操作BOM window 所有浏览器都支持 window 对象.它代表浏览器的窗口. 所有全局 JavaScript 对象,函数和变量自动成为 window 对象的成员. 全局变量是 window 对 ...

  6. CSS Transform完全指南 #flight.Archives007

    Title/ CSS Transform完全指南 #flight.Archives007 序: 第7天了! 终身学习, 坚持创作, 为生活埋下微小的信仰. 我是忘我思考,共同进步! 简介: 一篇最简约 ...

  7. SQL injection : UNION attacks

    当应用程序易受SQL注入攻击并且查询结果在应用程序的响应中返回时,可以使用UNION关键字从数据库中的其他表检索数据.这将导致SQL注入联合攻击. UNION关键字允许您执行一个或多个附加的SELEC ...

  8. bluecms安装错误一记

    菜鸡兴致勃勃下载了bluecms1.6准备大干一番 环境 phpstudy mysql 5.7.26 apache 2.4.39 php 7.3.4 结果安装第四步发现个这个问题   开始还以为自己这 ...

  9. mysql如何查看是32位还是64位?

    mysql如何查看是32位还是64位? 1. mysql -V或mysql --version 或者 2. 进入mysql,输入命令:show variables like '%version_%';

  10. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util; import javax.servlet.http.HttpServletRequest; impor ...