axios 封装 request.js

import axios from 'axios';

// 创建一个 axios 对象
const request = axios.create({
  baseURL: 'http://localhost:8080',
  timeout: 5000
});

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    config.headers['Content-Type'] = 'application/json;charset=utf-8';
    // 直接从 localStorage 获取 JWT 字符串
    let token = localStorage.getItem('user');
    if (token) {
      // 按照规范,JWT 通常以 "Bearer " 开头添加到 Authorization 头中
      token = token.replace(/^"(.*)"$/, '$1'); // 去除多余的""引号
      config.headers['Authorization'] = `Bearer ${token}`;
    //   console.log('Request Headers:', config.headers);
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  (response) => {
    // response.data 即为后端返回的 Result
    let res = response.data;
    // 兼容服务端返回的字符串数据
    if (typeof res ==='string') {
      res = res? JSON.parse(res) : res;
    }
    return res;
  },
  (error) => {
    console.log('err' + error); // for debug
    return Promise.reject(error);
  }
);

export default request;
posted @ 2025-03-01 23:47  ToFuture$  阅读(40)  评论(0)    收藏  举报