代码之家  ›  专栏  ›  技术社区  ›  skomorokh

如何使用GraphQL解析器中包含的JSON API?

  •  1
  • skomorokh  · 技术社区  · 8 年前

    我很好奇如何最好地为apollo server构建GraphQL解析器,以利用API选择性解析外键的能力(类似于JSON API) includes

    GET /articles/1?include=comments HTTP/1.1
    

    然而,记录请求是在 articles 分解器。它能以某种方式访问它下面的字段吗?可以 comments 解析程序以某种方式影响其父级?

    我看到了 a blog post 在graphql上。引用 pull request 旨在解决这一问题。。。这一点后来被作者抛弃了。我还可以采取什么其他方法?这基本上是当前规范的限制吗?还有其他可能有所帮助的变化吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Daniel Rearden    8 年前

    这是一个有趣的用例:)

    articles 在解析程序之前调用 comments --你不可能在里面做任何事 分解器会影响 文章 分解器执行。

    GraphQLResolveInfo 对象最后一个包含有关提交到服务器的查询的信息。

    query ArticlesQuery {
      articles {
        comments {
          text
        }
      }
    }
    

    信息对象看起来像这样:

    {
      "fieldNodes": [
        "name": {
          "value": "articles"
        },
        selectionSet: [
          "name": {
            "value": "comments"
          },
          selectionSet: [
            "name": {
              "value": "text"
            }
          ]
        ]
      [
    }
    

    我省略了许多其他字段,但您可以看到对象是如何嵌套的,就像您的查询文档一样。这使得可以对其进行迭代,以检查实际请求了哪些字段。然后可以适当修改API调用。

    like this one ,这可以帮助您更轻松地解析对象。