VUE项目中同时使用API代理与MockJs

VUE项目中同时使用API代理与MockJs

使用Mock的场景:

Mock 数据是前端开发过程中必不可少的一环,是分离前后端开发的关键链路。通过预先跟服务器端约定好的接口,模拟请求数据甚至逻辑,能够让前端开发更加独立自主,不会被服务端的开发所阻塞。

使用API代理的场景:

如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器。这个问题可以通过 vue.config.js 中的 devServer.proxy 选项来配置。

当以上两种场景同时存在的配置案例,即后端有些API已开发完成,使用API代理通道,而后端未完成的API,使用Mock。若依的vue前端去除了mock,本文目的是把vue-element-admin中的mock加进来。

VUE-Element-Admin中改进的Mock-server

a参考:https://panjiachen.gitee.io/vue-element-admin-site/zh/guide/essentials/mock-api.html#新方案

  • 复制vue-element-admin中的mock目录到自己的项目中,项目结构如下:

image-20210629161327164

  • 在.env.development文件中,配置以下环境变量:
VUE_APP_BASE_API = '/dev-api'
VUE_APP_MOCK_API = '/mock-api'
  • vue.config.js配置
devServer: {
    host: '0.0.0.0',
    port: port,
    open: true,
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://localhost:8080`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    },
    before: require('./mock/mock-server.js'),
    disableHostCheck: true
  },
  • 把utils/request.js复制一份,并将baseURL设置成process.env.VUE_APP_MOCK_API

image-20210629162433752

  • 对于需要Mock的API,导入request-mock:

image-20210629162659495

  • 到此get请求都没有问题,但put及其他请求则会出现超时,把mock-server.js 修改一下,注释app.use(bodyParser.json())

image-20210630170329160

这样,当后端API开发完成后,前端只需要将API文件中的request导入 '@urils/request'就可以了。

posted @ 2021-06-29 16:34  一 缕 阳 光  阅读(2306)  评论(2编辑  收藏  举报