【问题标题】:Apollo Federated Gateway returns an error when trying to use a .NET Core GraphQL federated subgraph尝试使用 .NET Core GraphQL 联合子图时,Apollo 联合网关返回错误
【发布时间】:2021-08-19 04:14:02
【问题描述】:

我正在努力学习 Apollo Federation,因此我首先查看了他们的示例 (https://github.com/apollographql/federation-demo)。这个示例存储库很好用,我可以在 Node.js 中添加一个新服务作为子图。

我还想在 .NET Core 中添加一个新服务作为子图,以扩展示例项目中定义的 User 类型。为此,我使用 graphql-dotnet 创建了一个新服务。

我的架构定义如下:

extend type User @key(fields: "id") {
    id: ID! @external
    phone: String
}

GraphQL Playground 似乎工作正常,但是当我尝试将服务包含在我的网关中时,我收到以下错误:UnhandledPromiseRejectionWarning: Error: Couldn't load service definitions for "user-service" at http://localhost:5000/graphql: Syntax Error: Expected Name, found "}".

【问题讨论】:

    标签: node.js asp.net-core graphql apollo apollo-federation


    【解决方案1】:

    显然,这是由于如果不扩展查询类型,graphql-dotnet 服务器 NuGet 包(当前为 5.0.2)不会生成正确的 SDL。服务正常启动,我可以导航到 UI Playground。

    查询:

    query {
      _service {
        sdl
      }
    }
    

    结果(json):

    {
      "data": {
        "_service": {
          "sdl": "type Query {\r\n\r\n}\r\n\r\nextend type User @key(fields: \"id\") {\r\n  id: ID! @external\r\n  phone: String\r\n}\r\n"
        }
      },
      "extensions": {}
    }
    

    请注意,graphql-dotnet 在 SDL 中生成了一个空的 type Query {\r\n\r\n} 部分,它不应该存在,因为我没有在我的架构中扩展查询类型。我用 graphql-dotnet github 项目打开了一个issue

    解决方法可能是使用新功能扩展查询类型,至少在问题得到解决之前。

    【讨论】:

      猜你喜欢
      • 2020-02-06
      • 2020-12-21
      • 2019-10-31
      • 2020-09-09
      • 2019-07-02
      • 1970-01-01
      • 2020-09-06
      • 2016-05-02
      • 2021-10-03
      相关资源
      最近更新 更多