【发布时间】:2021-03-02 10:41:43
【问题描述】:
我有一个工作的 Fastify REST 服务器,它公开了一个符合标准的 OpenAPI 合约,我希望通过 Apollo 额外添加 GraphQL 支持。
https://www.npmjs.com/package/apollo-server-fastify
我完成了上述模块的设置说明,一切看起来都很简单,直到需要定义连接点所需的 TypeDef 和 Resolver 信息。不想手动重新发明映射,我决定利用以下包:
https://www.npmjs.com/package/openapi-to-graphql-cli
具体来说,我运行了以下命令:
openapi-to-graphql spec-2.0.json --operationIdFieldNames --save spec.graphql
运行时没有任何抱怨,并吐出在我看来是我的 API 的完整 TypeDef 集。希望这就是所有需要的,我把它连接起来:
const apolloServer = new ApolloServer({
typeDefs: gql`${fs.readFileSync('spec.graphql', 'utf-8')}`,
tracing: true,
playground: true
})
fastifyInstance.register(apolloServer.createHandler())
当我导航到新的 /graphql 端点时,GraphQL Playground 呈现,并且查询窗口中的 Intellisense/AutoComplete 功能似乎工作 - 它标记了语法错误,列出了我的操作和属性等。但是,任何时候我执行一个命令,我最终得到一个类似于以下的空结果:
{
"data": {
"operationNameGoesHere": null
}
}
我很茫然。显然有些东西没有正确连接将 GraphQL 查询连接到 REST 端点的默认解析器,但我不知道如何排除故障。
作为健全性检查,我为我的一个操作硬编码了一个基本解析器以始终返回 true,并且 确实 在 GraphQL Playground 中工作,所以我认为除了 GraphQL 到 REST 的连接之外,其余的设置都很好。
感谢任何见解。
【问题讨论】:
标签: graphql apollo openapi fastify