需求
要想统一处理所有http请求和响应,就得用上 axios 的拦截器。通过配置 http response inteceptor ,当后端接口返回 401 Unauthorized(未授权) ,让用户重新登录。通过这个项目学习如何实现一个前端项目中所需要的 登录及拦截、登出、token失效的拦截及对应 axios 拦截器的使用。
代码如下:
const instance = axios.create({
baseURL: 'http://www.laravel5.5.com/api/',
timeout: 10000,
});
//POST传参序列化(添加请求拦截器)
// 在发送请求之前做某件事
instance.interceptors.request.use(config => {
// // 设置以 form 表单的形式提交参数,如果以 JSON 的形式提交表单,可忽略
if(config.method === 'post'){
// JSON 转换为 FormData
const formData = new FormData();
Object.keys(config.data).forEach(key => formData.append(key, config.data[key]))
config.data = formData
}
// 下面会说在什么时候存储 token
if (localStorage.token) {
config.headers['Authorization'] = localStorage.token;
config.headers['Accept'] = 'application/json';
// config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// store.dispatch('logined', l