gpt4 book ai didi

javascript - 如何克隆 axios 实例

转载 作者:行者123 更新时间:2023-12-05 03:30:34 24 4
gpt4 key购买 nike

我有一个在我的应用程序中使用的全局 axios 实例。我想针对特定请求在本地更新 header 。但是标题更新正在更新全局默认值。我想了解执行此操作的最佳方法。目前我正在设法重置标题。还玩弄了深度克隆全局 axios 实例的想法。它只是感觉像是一个重要的功能,但找不到任何文档,除了一个关于子实例的 github 问题。 ( https://github.com/axios/axios/issues/1170 )

编辑:很抱歉没有提供代码。这是我给出一个想法的设置:以下是我的全局 axiosClient(在文件 apiClient.js 中),添加了一些拦截器(代码中未显示)。

const axiosClient = axios.create({
baseURL,
headers: {
Authorization: <bearer_token>,
'Content-Type': 'application/json',
.
}
});

在我的模块中,我导入相同的客户端来发出 api 请求:

import axiosClient from '../apiClient';

export function someRequest({ file }) {
let formData = new FormData();
formData.append('file', file);
const initHeader = axiosClient.defaults.headers['Content-Type'];
axiosClient.defaults.headers['Content-Type'] = 'multipart/form-data'; // I want to make this change only for the local instance
const request = axiosClient.post('parse-rebalance-data', formData);
axiosClient.defaults.headers['Content-Type'] = initHeader; //I have to reset the changes I made to the axiosClient
return request;
}

现在我的问题又是,(1) 我是否需要以这种 hacky 的方式来做,或者 (2) 我应该研究深度克隆本地副本,或者 (3) 是否有记录的方法来做这件事我不见了。

最佳答案

Axios 实例所做的一切都是为配置设置默认值。但是,您可以使用 config 参数将任何其他配置传递给每个调用,就像使用全局 Axios 一样:

import axiosClient from '../apiClient';

export function someRequest({ file }) {
let formData = new FormData();
formData.append('file', file);
return axiosClient.post('parse-rebalance-data', formData, {headers: {'Content-Type': 'multipart/form-data'}});
}

config 参数中指定的 header 与默认值中的 header 合并。

关于javascript - 如何克隆 axios 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70797152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com