方法一
utils/request.js
import axios from 'axios' // 引入axios
const instance = axios.create({
baseURL: 'http://www.baidu.com',
timeout: 60000
})
// 请求拦截器
instance.interceptors.request.use((config) => {
console.log('发请求之前', config)
return config
}, (error) => {
return Promise.reject(error)
})
// 响应拦截器
instance.interceptors.response.use((response) => {
console.log('得到的响应数据', response)
return response
}, (error) => {
console.log('响应错误', error)
return Promise.reject(error)
})
// get请求
export function get (url, data = {}) {
return new Promise((resolve, reject) => {
instance
.get(url, {
params: data
})
.then((response) => {
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
// post请求
export function post (url, data = {}) {
return new Promise((resolve, reject) => {
instance.post(url, data).then(
(response) => {
resolve(response.data)
},
(err) => {
reject(err)
}
)
})
}
api/index.js
import { get, post } from "./axios";
// 登录
const login = (params) => post('/tv/login', params);
export {
login,
};
vue.config.js
module.exports = {
lintOnSave: false,
// publicPath: './',
// outputDir: 'dist', // 输出文件目录
// transpileDependencies: true,
devServer: {
open: true,
host: 'localhost',
port: '8080',
proxy: { //解决跨域
'^/': {
target: 'http://192.168.3.222:8081',
changeOrigin: true,
// 是否开启跨域
ws: true,
// 如果要代理websockets, 配置这个参数
secure: false, // 如果是https接口,需要配置这个参数
pathRewrite: {
'^/': ''
}
}
}
}
}
方法二
utils/request.js
import axios from 'axios'
import router from '@/router'
// get请求
export const get = (url, params = {}) => {
let token = localStorage.getItem('token') || ''
return new Promise((resolve, reject) => {
axios.get(url, {params, headers: {'token': token}}).then(res => {
if(res.data.msg == 'token无效' || res.data.msg == '无效签名' || res.data.msg == 'token过期' || res.data.msg == '算法不一致') {
router.push('/login')
} else {
resolve(res)
}
}).catch(err => {
console.log(err)
})
});
}
// post请求
export const post = (url, params, isFile = false) => {
let token = localStorage.getItem('token')
let data = null;
//TODO 如果是文件,转 FromData;不是就 qs.stringify()
if (isFile) {
data = new FormData();
for (let key in params) {
if (Array.isArray(params[key])) {
params[key].forEach(item => {
data.append(key + "[]", item);
})
} else {
data.append(key, params[key]);
}
console.log(key, params[key])
}
console.log(data)
} else {
data = params
}
// 返回
return new Promise((resolve, reject) => {
axios.post(url, data, {headers: {'content-Type': 'application/json', 'token': token}}).then(res => {
if(res.data.msg == 'token无效' || res.data.msg == '无效签名' || res.data.msg == 'token过期' || res.data.msg == '算法不一致') {
router.push('/login')
} else {
resolve(res)
}
}).catch(err => {
console.log(err)
})
})
}
api/index.js
import {get, post } from "@/utils/request";
// 登录
export const login = (params) => get("/szhyq/screen/login", params);
vue.config.js
module.exports = {
lintOnSave: false,
publicPath: './', //process.env.NODE_ENV
outputDir: 'dist', // 输出文件目录
devServer: {
open: true,
host: 'localhost',
disableHostCheck: true,
port: 8080,
https: false,
hotOnly: false,
proxy: { //解决跨域
'^/szhyq': {
target: 'https://test-zhzl.spacecig.com:18443',
// target: 'http://192.168.1.17:8088',
changeOrigin: true,
ws: true,
secure: true,
pathRewrite: {
'^/szhyq': '/szhyq'
}
}
}
},
}