随着 es6 的流行开来,再加上 axios 的适用,于是 axios 配合 es6 中的 Promise ,已经渐渐成为前端程序员的标配。下面,是我封装的一个简单的请求。有很多不足,望各位大神不吝赐教,指导。
export const http = (info) => {
let token = sessionStorage.getItem("token")
//post请求,设置为 ‘application/json' ,前后端约定。如果是文件上传,需要改为 formData
axios.defaults.headers.post['Content-Type'] = 'application/json'
// 不公开的请求,需要携带 token 用户验证参数,登陆后一般后端会给
axios.defaults.headers.common["token"] = token;
let url = baseURL+info.url
let params = info.params
let method = info.method
return new Promise(function (resolve, reject) {
let promise
if (!method) {
method = 'GET'
}
if (method === 'GET') {
let dataStr = ''
if (params) { // get 请求把参数拼接到 url 上,也可放入 get 参数中
Object.keys(params).forEach(key => {
dataStr += key + '=' + params[key] + '&'
})
}
if (dataStr !== '') {
dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
url = url + '?' + dataStr
}
promise = axios.get(url)
} else {
promise = axios.post(url, params)
}
promise.then(response => {
if (response.status != 200) {
return
}
//正确返回所需要的值
resolve(response.data.info)
}).catch(error => {
// 处理错误
reject(error)
})
})
}