美文网首页
Vue解决webpack打包后请求接口404问题

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

作者: 马小帅mm | 来源:发表于2018-08-28 17:24 被阅读0次

    之所以会出现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

    相关文章

      网友评论

          本文标题:Vue解决webpack打包后请求接口404问题

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