版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
http.js
/*
* @Description: In User Settings Edit
* @Author: your name
* @Date: 2018-12-08 11:57:56
* @LastEditTime: 2019-09-01 12:48:20
* @LastEditors: Please set LastEditors
*/
/**
* 引用axios
*/
import axios from 'axios'
import NProgress from 'nprogress'
/**
*
* @param {*} method http请求方式
* @param {*} url 请求接口地址
* @param {*} params 提交的参数
* @param {*} success 成功回调
* @param {*} failure 失败回调
*/
axios.interceptors.request.use(
config => {
NProgress.start()
return config
},
error => {
return Promise.reject(error)
}
)
axios.interceptors.response.use(
response => {
NProgress.done()
return response
},
error => {
NProgress.done()
return Promise.reject(error)
}
)
function apiAxios (method, url, params) {
let tokenStore = localStorage.getItem('store')
if (tokenStore != null) {
axios.defaults.headers.common['Authentication-Token'] = tokenStore
}
return new Promise((resolve, reject) => {
axios({
method: method,
url: url,
data: method === 'POST' || method === 'PUT' ? params : null,
params: method === 'GET' || method === 'DELETE' ? params : null,
withCredentials: false
})
.then(function (res) {
if (res.status === 200) {
resolve(res.data)
} else {
reject(res.response)
}
})
.catch(function (err) {
let res = err.response
reject(res)
if (err) console.error('api error, HTTP CODE: ' + res.data.status)
})
})
}
/**
* 返回在vue模板中的调用接口
*/
export default {
/**
*
* @param {*} url
* @param {*} params
* @param {*} success
* @param {*} failure
* @param {*} isSign
*/
get: function (url, params, success, failure) {
return apiAxios('GET', url, params, success, failure)
},
post: function (url, params, success, failure) {
return apiAxios('POST', url, params, success, failure)
},
put: function (url, params, success, failure) {
return apiAxios('PUT', url, params, success, failure)
},
delete: function (url, params, success, failure) {
return apiAxios('DELETE', url, params, success, failure)
}
}