微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apollo Federated Gateway 在尝试使用 .NET Core GraphQL 联合子图时返回错误

如何解决Apollo Federated Gateway 在尝试使用 .NET Core GraphQL 联合子图时返回错误

我正在尝试学习阿波罗联盟,所以我从查看他们的样本 (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 "}".

解决方法

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

查询:

ActiveSheet

结果(json):

query {
  _service {
    sdl
  }
}

请注意,graphql-dotnet 在 SDL 中生成了一个空的 { "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 github 项目打开了一个 issue

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。