封装api
index.js
let uploadBase = ''
if(process.env.NODE_ENV === 'production'){
uploadBase = 'https://cloud.inschos.com'
}
const ApiSetting = {
// 账号相关
account_login: {url: '/api/account/web/account/login/company',method: 'post'},
}
export default ApiSetting
axios.js
import Axios from 'axios'
import { MessageBox } from 'element-ui'
Axios.defaults.withCredentials = true
Axios.interceptors.response.use(
data => {
if (data.status && data.status === 200 && data.data.code !== 200) {
if(data.data.code === 502){
location.href = '/login'
}
// MessageBox.alert(data.data.message)
return Promise.reject(data.data.message[0].details, data)
}
return data
},
err => {
if (err.response.status === 404) {
// MessageBox.alert('请求无效', '提示')
} else if (err.response.status === 403) {
MessageBox.alert('权限不足,请联系管理员!', '提示')
} else if (err.response.status === 502) {
location.href = '/login'
} else {
MessageBox.alert('服务器错误!', '提示')
}
return Promise.reject(err)
}
)
function errorState(err) {
}
function successState(res) {
}
const httpServer = (opts, data) => {
const token = localStorage.getItem('token')
const PUBLIC = `?token=${token}`
let httpDefaultOpts = ''
var host = `${process.env.HOST}`
var prot = `${process.env.PORT}`
var base = host +(prot?":"+prot:"")
if (opts.method === 'post') {
httpDefaultOpts = {
method: opts.method,
url: `${base}${opts.url}${PUBLIC}`,
headers:{
'Content-Type':'text/html;charset=utf-8'
},
// timeout: 10000,
data: data
}
} else {
httpDefaultOpts = opts
}
return new Promise(function (resolve, reject) {
Axios(httpDefaultOpts).then(
(res) => {
successState(res)
resolve(res)
}
).catch(
(err) => {
errorState(err)
reject(err)
}
)
})
}
export default httpServer
使用封装好的api
import ApiSetting from "@/api"; //首先要引入
//方法
submitForm() {
this.$http(ApiSetting.account_login, this.ruleForm2)
.then(res => {
if (res.data.code == 200) {
var data = res.data.data;
Object.assign(data, this.ruleForm2);//这是合并对象
}
})
.catch(err => {
this.$notify({
title: "操作提示",
message: err,
type: "error"
});
});
},
安装axios
1.需要在命令行里安装
npm install axios
2.需要在main.js里引入
import axios from 'axios'
Vue.prototype.$http = axios
3.因为你已经把$http挂载到vue实例上了,所以页面调用的时候就可以直接this.$http了