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

如何动态修改Apollo Client使用的端点URI 无需强制刷新页面

解决方案

完全可以实现无刷新动态修改请求URI,给你两种可行方案:

方案1:在现有authMiddleware中直接覆盖URI(就是你提到的思路)

Apollo的请求上下文支持直接设置uri字段,优先级高于HttpLink初始化时传入的固定地址,修改后的中间件代码如下:

const authMiddleware = new ApolloLink(
  (operation: Operation, forward: NextLink) => {
    operation.setContext((_: any) => {
      return {
        // 新增该行,每次请求拉取最新的端点地址
        uri: `${getTenantEndpoint()}/graphql`,
        headers: {
          ...operation.getContext().headers,
          Authorization: token && `Bearer ${token}`
        }
      };
    });

    return forward(operation);
  }
);

修改完成后,你更新localStorage里的租户端点配置后,下一次发起请求自动会使用新的URI,不需要刷新页面。

方案2:直接给HttpLink配置动态URI(更简洁,无需改中间件)

HttpLink的uri参数本身支持传入函数,每次请求时会自动执行该函数生成最新地址,你直接修改初始化HttpLink的代码即可:

const httpLink = new HttpLink({
  // 把固定字符串改为函数,每次请求动态生成URI
  uri: () => `${getTenantEndpoint()}/graphql`,
  fetch
});

注意事项

你当前代码里create函数中定义的httpLinkConfig没有实际被使用,最终Apollo Client链路用的是外层提前初始化的httpLink,修改配置时记得同步调整外层的httpLink即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:21:01