You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让reqHeaders的UUID属性每次调用getQueryData时都执行createToken()

根因

模块顶层定义的reqHeaders对象会在模块首次加载时完成初始化,对象属性UUID对应的createToken()仅会在初始化阶段执行一次,后续所有getQueryData调用引用的都是已经固化了UUID值的同一个reqHeaders对象,因此不会触发新的token生成。

修复方案

直接将请求头的生成逻辑移入getQueryData函数内部,每次调用函数时都会重新生成请求头、执行createToken()获取最新UUID:

const createToken = () => {
  // some logics...
  return `${token}`;
};

const getQueryData = query => {
  // 每次调用生成全新请求头
  const reqHeaders = {
    UUID: createToken(),
    "Content-Type": "application/json;charset=UTF-8"
  };
  return axiosInstance
    .post("/someAddress", { selectQuery: query }, { headers: reqHeaders })
    .then(response => {
      // some logs...
      return response.data;
    })
    .catch(error => {
      // some logs....
      return error;
    });
};

module.exports = getQueryData;

如果存在多个请求函数共用请求头的场景,可以将请求头封装为生成函数,避免重复代码:

const createToken = () => {
  // some logics...
  return `${token}`;
};

// 公共请求头生成函数
const generateReqHeaders = () => ({
  UUID: createToken(),
  "Content-Type": "application/json;charset=UTF-8"
});

const getQueryData = query => {
  return axiosInstance
    .post("/someAddress", { selectQuery: query }, { headers: generateReqHeaders() })
    .then(response => {
      // some logs...
      return response.data;
    })
    .catch(error => {
      // some logs....
      return error;
    });
};

module.exports = getQueryData;

内容的提问来源于stack exchange,提问作者Kapuya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:24:01