axios封裝並攜帶自定義請求頭(筆記)

import axios from ‘axios’

// 創建axios實例
const service = axios.create({
baseURL: process.env.BASE_API, // api的base_url
timeout: 5000 // 請求超時時間
})

axios.defaults.headers[‘Content-Type’] = ‘application/x-www-form-urlencoded’
service.interceptors.request.use(function (config) {

config.headers[‘version’] = ‘v1.0’;
if (localStorage.getItem(“user-token”)) {
config.headers[‘user-token’] = localStorage.getItem(“user-token”);
}
if (localStorage.getItem(“access-token”)) {
config.headers[‘access-token’] = localStorage.getItem(‘access-token’) || ‘’;
}
config.headers[‘plat-form’] = 2;
return config
}, function (error) {
return Promise.reject(error)
})

service.interceptors.response.use(function (response) {
/**

  • 下面的註釋爲通過在response裏,自定義code來標示請求狀態
  • 當code返回如下情況則說明權限有問題,登出並返回到登錄頁
  • 如想通過xmlhttprequest來狀態碼標識 邏輯可寫在下面error中
    */
    response => {
    const res = response.data
    }
    }
    // response => {
    // const res = response.data
    // if (res.code !== 20000) {
    // })
    // // 50008:非法的token; 50012:其他客戶端登錄了; 50014:Token 過期了;
    // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
    // }).then(() => {
    // })
    // })
    // }
    // return Promise.reject(‘error’)
    // } else {
    // return response.data
    // }
    // },
    return response
    }, function (error) {
    console.log(‘err’ + error)
    Message({
    Message: error.message,
    type: ‘error’,
    duration: 5 * 1000
    })
    return Promise.reject(error)
    })

export default {
//get請求
get(url, params) {
//promise示例
// axios.post(’/user’, {
// firstName: ‘Fred’,
// lastName: ‘Flintstone’
// })
// .then(function (response) {
// console.log(response);
// })
// .catch(function (error) {
// console.log(error);
// });
return new Promise((resolve, reject) => {
service({
method: ‘get’,
url,
params,
}).then(res => { //axios返回的是一個promise對象
resolve(res) //resolve在promise執行器內部
}).catch(err => {
console.log(err, ‘異常’)
})

})

},
//post請求
post(url, param) {
return new Promise((resolve, reject) => {
service({
method: ‘post’,
url,
data: param,
}).then(res => {
resolve(res)
}).catch(err => {
console.log(err, ‘異常’)
})
})
}
}
export {
post,
get,
service
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章