在 axios 请求拦截器中可直接解构 config 参数提取 url、method、headers 等字段,需确保返回完整 config 对象,推荐用默认参数防 undefined 并用展开运算符合并修改。

在 Axios 请求拦截器中使用对象解构,能让你快速提取 config 对象里的常用字段(比如 url、method、headers、data),让代码更简洁可读。关键在于:解构必须写在拦截器回调函数的参数位置,且要兼顾 config 可能为 undefined 的安全场景。
直接在拦截器参数中解构 config
Axios 请求拦截器接收一个 config 对象作为参数。你可以直接用解构语法从它身上取值:
axios.interceptors.request.use(
({ url, method, headers, data, params }) => {
console.log(`发起 ${method.toUpperCase()} 请求:${url}`);
// 可在此修改 headers 或 data 等
if (method === 'post' && data) {
headers['Content-Type'] = 'application/json';
}
return { url, method, headers, data, params }; // 注意:必须返回 config(或修改后的 config)
},
error => Promise.reject(error)
);
处理 config 可能为 undefined 的情况
虽然正常流程中 config 不会是 undefined,但为防意外(如手动调用拦截器逻辑出错),建议加默认值或短路保护:
- 用默认参数提供空对象:
({ url = '', method = 'get', headers = {}, data, params = {} } = {}) - 或先检查再解构(更稳妥):
if (!config) return config;再解构 - 对嵌套字段(如
headers.authorization)建议用可选链:headers?.authorization
解构时修改并返回 config 的常见写法
解构本身不改变原对象,若需添加/覆盖字段(如统一加 token),推荐先解构,再用展开运算符合并:
axios.interceptors.request.use(
({ url, method, headers = {}, data, params }) => {
const token = localStorage.getItem('token');
// 合并新 headers,不破坏原有字段
const newHeaders = { ...headers, Authorization: token ? `Bearer ${token}` : '' };
return { url, method, headers: newHeaders, data, params };
}
);
避免解构后漏返 config 导致请求中断
这是新手高频坑:只解构、不返回,或返回了错误结构(如只返回 { url, method }),Axios 会因缺少必要字段而报错。记住:
- 必须返回一个完整的 config 对象(哪怕只是原样返回)
- 解构 ≠ 赋值,解构后仍需显式
return完整 config - 推荐用展开运算符保留未解构字段:
return { ...config, headers: newHeaders };
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











