我有一个node.js express(服务器端渲染)前端应用程序,可以调用java后端端点。我使用Axios来调用Java端点。我需要在express向java发出的每个请求中设置一个名为“agent-id”的头,该头的值来自express会话(req.session
)。
我的Axios代码在另一个模块上。我正在导入该模块并调用我的API。
目前我的Axios模块代码是这样设置的:
const axiosClient = axios.create({
baseURL: '...',
httpsAgent: null,
proxy: false,
timeout: 60000,
});
axiosClient.interceptors.request.use(request => {
console.log(`Starting:${request.baseURL}${request.url}`);
// HOW DO I SET HEADER FROM EXPRESS SESSION HERE //
return request;
}, error => Promise.reject(error));
axiosClient.interceptors.response.use(response => {
console.log(`Received from:${response.config.baseURL}${response.config.url}`);
return response;
}, error => Promise.reject(error));
module.exports = axiosClient;
我从frontend express app调用API如下:
import api from 'my-api-module';
const { data = {} } = await api.someName();
我所尝试的
我尝试使用app.use
中间件更新req.headers
,但在axios拦截器中找不到该头文件。
理想情况下,我不想通过在每个现有的API调用上传递req
obj来改变整个API调用结构,那么我是否可以为每个Java请求使用express session值全局设置头部呢?
1条答案
按热度按时间ep6jt1vc1#
经过大量的挖掘,我发现没有简单的方法来进行全局更改,所以我不得不在每个API调用时手动发送头。
在拦截机上,我做到了:
PS:不是最好的解决方案,但我计划完全重写Axios模块,使其更加模块化