Vue解决webpack打包后请求接口404问题

2018-08-28  本文已影响0人  马小帅mm

之所以会出现404,原因是本地开发和线上开发接口服务器不一样,请求的ip地址不一样,所以就要把两个环境的url区分开,在axios请求之前重新组装。

开发环境 config/dev.env.js

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./dev.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  API_ROOT: '"https://www.dev.com"'  //本地接口请求前缀
})

线上环境环境 config/prod.env.js

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"production"',
  API_ROOT: '"https://www.prov.com"'   //线上接口请求前缀
})

在请求之前拦截,重装URL ./assets/js/axios.js

(如果没有axios.js文件,需要自己手动创建)

import Axios from 'axios';
var root = process.env.API_ROOT;
const axios = Axios.create();
//请求拦截
axios.interceptors.request.use((config) => {
    //请求之前重新拼装url
    config.url = root + config.url;
    return config;
});
export default axios;

在Vue使用封装后的axios,在main.js加入

import axios from './assets/js/axios';
Vue.use(axios);

页面正常使用请求

export default {
    name: 'Order',
    data () {
        return {
            order_list: []
        }
    },
    methods: {
        fetchList: function () {
            var self = this;
            self.$axios
                .post('/api/order_list')
                .then((res) => {
                    if(res.result === '0000'){
                        self.order_list = res.data;
                        return;
                    }
                });
        }
    }
}
tips: 简书上交流可能会看不到消息,如有问题,欢迎进群交流50063010
上一篇下一篇

猜你喜欢

热点阅读