如何解决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 举报,一经查实,本站将立刻删除。