之所以会出现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;
}
});
}
}
}
网友评论