美文网首页Web前端之路
vue.js根据代码运行环境选择baseurl

vue.js根据代码运行环境选择baseurl

作者: 知止至得 | 来源:发表于2018-01-27 09:42 被阅读4513次

    配置通用的API前缀可以更好在本地通过接口代理转发获取数据、或者部署时在Nginx中做反向代理,但是项目中一旦涉及大量的需要文件上传的部分(文件上传不走Ajax的方法),我们需要考虑更好管理接口的baseURL,项目中 Ajax 请求用 axios ,原始代码如下

    修改前

    // 创建axios实例、配置baseURL、超时时间
    const service = axios.create({
      baseURL: '/development/api', // 从环境进程中根据运行环境获取的api的base_url
      timeout: 5000                  // 请求超时时间
    })
    
    /* 保存分配角色 */
    export function fetchSaveDisUser (params1) {
      return fetch({
        url: '/user/empower',
        method: 'post',
        params: params1,
        paramsSerializer: function (params) {
          return Qs.stringify(params, { arrayFormat: 'repeat' })
        }
      })
    }
    
    /* 上传文件URL 从运行环境process.env中读取API配置 */
    export let uploadUrl = '/development/api/doi/analys/upload'
    

    优化方法

    找到config/dev.env.jsconfig/prod.env.js,在代码添加变量 API_BASEURL(名字自定义)如下:

    module.exports = {
      NODE_ENV: '"production"',  // PS:不要复制、开发环境和生产环境有区别
      API_BASEURL: '"/development/api/"'  // 需要自己添加的代码
    }
    

    然后在需要使用baseURL的地方替换为 process.env. API_BASEURL

    修改后代码如下

    // 创建axios实例、配置baseURL、超时时间
    const service = axios.create({
      baseURL: process.env.API_BASEURL, // 从环境进程中根据运行环境获取的api的base_url
      timeout: 5000                  // 请求超时时间
    })
    
    /* 保存分配角色 */
    export function fetchSaveDisUser (params1) {
      return fetch({
        url: '/user/empower',
        method: 'post',
        params: params1,
        paramsSerializer: function (params) {
          return Qs.stringify(params, { arrayFormat: 'repeat' })
        }
      })
    }
    
    /* 上传文件URL 从运行环境process.env中读取API配置 */
    export let uploadUrl = process.env.API_BASEURL + '/doi/analys/upload'
    

    相关文章

      网友评论

        本文标题:vue.js根据代码运行环境选择baseurl

        本文链接:https://www.haomeiwen.com/subject/iotnaxtx.html