处理 GraphQL API 响应中的空值

问题描述 投票:0回答:1

我最近接到一个面试任务,要求我使用 GraphQL API 开发一个 React 应用程序。有问题的 API 是 SpaceX GraphQL API。作为任务的一部分,我需要检索每次启动的特定字段,例如任务名称、任务补丁图像、启动日期和成功状态(布尔值)。

但是在查询 API 时,我遇到了一个挑战,某些字段(特别是“launch_success”和“mission_patch”)返回空值。经过进一步探索,我发现这个问题也延伸到了其他领域。

我在下面提供了一个示例查询:

query Launches {
  launches {
    mission_name
    rocket {
      rocket_name
    }
    mission_id
    launch_success
  }
}

在此查询中,“launch_success”字段始终返回 null 值,但事实并非如此,因为当我使用 REST API 时,成功启动率为 80%。由于我对 GraphQL 比较陌生,因此我不确定此问题的原因以及如何解决它。

有人可以深入了解为什么某些字段返回空值并建议潜在的故障排除步骤或修复吗?我将不胜感激任何指导!

P.S 我已经尝试过使用 REST API 进行相同的操作,并且能够毫无问题地获取所有值(面试官提供了两种解决方案,但我需要使用 GraphQL 来完成)

使用的 GraphQL Playground:https://studio.apollographql.com/public/SpaceX-pxxbxen/variant/current/explorer

我尝试了多种策略从 GraphQL API 检索所需的数据,包括查询不同的字段和利用各种查询结构。具体来说,我尝试从不同的端点查询“launch_success”,并探索可能提供类似信息的替代字段。但是,在每次尝试中,“launch_success”字段始终返回空值。

reactjs api graphql apollo-client
1个回答
0
投票

您的 GraphQL 查询完全没有问题。在 GQL 中,选择任何其他字段不会影响另一个字段。如果是

null
,从服务器的理解来看就是
null

我相当有信心您已经发现了 SpaceX GQL API 中的错误。 GQL 模式确实声明此字段(或许多,如果实际上有的话)为不可空,这意味着您的应用程序代码确实需要处理这些字段是否为

null
。然而,当你通过其他方式验证数据存在时,为什么它是空的只能是 SpaceX 方面的问题。

© www.soinside.com 2019 - 2024. All rights reserved.