GraphQL 查询不存在对象的结果

And*_*ejs 12 rest graphql

我有一个 GraphQL 查询,它调用 REST 服务来获取返回对象。该查询包含一个 Id 参数,然后将该参数传递给服务。但是,如果具有该 ID 的对象不存在,则 REST 服务可以响应 http 状态 404 Not Found。这似乎是正确的回应。

如何在 GraphQL 中对“未找到”响应进行建模?有没有办法通知 GQL 调用者某些内容不存在?

更新
我正在考虑的一些选项:

  • 返回空值
  • 更改 GrqlhQL 查询以返回对象列表并返回未找到任何内容的空列表
  • 返回某种带有错误代码的错误对象

但目前尚不清楚 GQL API 设计是否有推荐的做法。

Day*_*uck 3

您可以将其视为错误并进行相应处理。

我建议您查看GraphQL 规范,其中有关错误处理的段落。
我希望它包含您正在寻找的内容。
基本上,您应该返回任何可以返回的内容,并告知客户“错误”字段中的潜在问题。

文档中的示例:
请求:

{
  hero(episode: $episode) {
    name
    heroFriends: friends {
      id
      name
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

回复:

{
  "errors": [
    {
      "message": "Name for character with ID 1002 could not be fetched.",
      "locations": [ { "line": 6, "column": 7 } ],
      "path": [ "hero", "heroFriends", 1, "name" ]
    }
  ],
  "data": {
    "hero": {
      "name": "R2-D2",
      "heroFriends": [
        {
          "id": "1000",
          "name": "Luke Skywalker"
        },
        {
          "id": "1002",
          "name": null
        },
        {
          "id": "1003",
          "name": "Leia Organa"
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)