如何在项目中一次性配置Axios的validateStatus函数?
如何全局配置Axios,避免重复传入相同参数?
你当前每次调用axios.post都要重复传入包含Content-Type和validateStatus的配置,想要一次性设置这些全局偏好,这里提供两种可行方案:
方案一:修改Axios全局默认配置
直接修改Axios的全局默认参数,所有后续请求都会自动继承这些配置:
import axios from "axios"; // 设置全局默认请求头 axios.defaults.headers.common['Content-Type'] = 'application/json'; // 设置全局validateStatus规则,所有状态码都视为成功响应 axios.defaults.validateStatus = () => true; function doSomething() { const response = await axios.post(url, form); } function doSomethingElse() { // 若某请求需要覆盖全局配置,直接传入自定义options即可 const customOptions = { // 比如临时修改validateStatus validateStatus: (status) => status >= 200 && status < 300 }; const response = await axios.post(url, form, customOptions); }
方案二:创建自定义Axios实例(推荐)
如果不想污染全局Axios实例,可以创建独立配置的自定义实例,适合多场景/多模块的项目:
import axios from "axios"; // 创建带默认配置的自定义Axios实例 const apiClient = axios.create({ headers: { 'Content-Type': 'application/json' }, validateStatus: () => true }); function doSomething() { const response = await apiClient.post(url, form); } function doSomethingElse() { // 同样支持传入自定义配置覆盖实例默认值 const customOptions = { headers: { 'Content-Type': 'multipart/form-data' // 临时修改请求头 } }; const response = await apiClient.post(url, form, customOptions); }
注意:Axios并没有axios.use()这个方法,你期望代码里的写法是错误的,上述两种方案是官方支持的全局配置方式。
内容的提问来源于stack exchange,提问作者1.21 gigawatts
相关产品推荐
相关产品推荐

