使用 apollo 捕获来自 graphql 的特定响应

Posted

技术标签:

【中文标题】使用 apollo 捕获来自 graphql 的特定响应【英文标题】:Catch specific response from graphql with apollo 【发布时间】:2018-09-28 13:49:15 【问题描述】:

在我的应用中,我有许多查询和突变,如下所述:

query name1($token: String!)
  session(authToken: $token) 
    user 
      id
    
  


mutation name2($token: String!)
  session(authToken: $token) 
    getSomething()
  

如果服务器端的会话有问题,我会从服务器得到响应 - session: null 并且没关系。由于许多查询和许多突变,我如何才能捕捉到这个特定的响应(session: null)并触发一些方法(在我的情况下注销并销毁本地存储中的令牌)。我需要一些通用解决方案(可能是一些后期软件或类似的东西),而不是在每个查询和突变中捕获该响应。

【问题讨论】:

【参考方案1】:

我可以想到两种解决方案:

1- 让您的服务器抛出一个错误而不是 null 并使用 apollo-link-error https://github.com/apollographql/apollo-link/tree/master/packages/apollo-link-error 在您的客户端中捕获该错误

2- 编写一个自定义 Apollo 客户端来查找特定值(session: null)。为此,我建议查看任何可用 Apollo 链接的源代码或查看本教程 https://dev-blog.apollodata.com/creating-a-data-component-with-apollo-link-f0719d8193ee

【讨论】:

以上是关于使用 apollo 捕获来自 graphql 的特定响应的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Apollo/GraphQL 中捕获错误

GraphQL + Apollo 错误:未捕获(承诺中)

如何在 jest / apollo 客户端中捕获被拒绝的 graphql 订阅?

如何从 graphql apollo 客户端查询中获取/记录/捕获错误

来自 GraphQL 网站的 Apollo-server 教程产生错误

使用 Apollo Federated GraphQL,有没有办法对来自外部实体的值进行排序/分页?