如何从Apollo客户端的useQuery获取响应头

His*_*His 6 javascript response-headers graphql apollo-client react-hooks

我根本无法找到一种方法来做到这一点。有谁知道这是否支持?谢谢。

Dan*_*den 8

ApolloClient 发出请求的方法以及使用它们的 React Hooks 充当数据实际获取方式的抽象。它可能来自 HTTP 上的远程服务器,来自缓存,来自直接针对模式执行请求等。因此,它们不会公开有关如何首先获取数据的任何信息,包括传输 -特定信息,例如 HTTP 标头。

如果您需要访问此信息,则适当的位置应位于您预先添加的链接内HttpLink- 可以是现有的链接,例如 或ContextLinkErrorLink也可以是您自己滚动的一些自定义链接。如果您在错误处理上下文中执行此操作,那么ErrorLink将是您最好的选择,如评论中所建议的那样。

HttpLink将来自服务器的原始响应注入到所有链接使用的上下文对象中(请参阅此处)。假设您使用默认fetchAPI 作为获取器,则此响应将是一个Response对象。

所以你可以这样做:

const link = onError(({ graphQLErrors, networkError, operation }) => {
  const { response } = operation.getContext();
  const { headers, status } = response;
  
  // do something with the headers
});
Run Code Online (Sandbox Code Playgroud)