如果我不使用放大,如何从 AppSync GraphQL 架构生成 Typescript 定义?

Posted

技术标签:

【中文标题】如果我不使用放大,如何从 AppSync GraphQL 架构生成 Typescript 定义?【英文标题】:How to generate Typescript definitions from AppSync GraphQL schema if I am not using amplify? 【发布时间】:2021-03-28 05:25:23 【问题描述】:

我使用 aws-cdk 设置了我的 AppSync api,但没有使用他们的放大框架。我试图弄清楚如何/是否可以在不使用放大的情况下从我的 AppSync schema.graphql 文件生成 Typescript 定义,即无法访问 amplify codegen 命令。我确实尝试安装和运行它,但我假设 amplify 期望文件位于某些目录中,因此失败了。

我查看了https://graphql-code-generator.com,但由于 AppSync 使用的特殊类型(如 AWSDateTime),它无法工作,解决此问题的方法是发布 api 并从 graphql 端点获取架构,但这并不理想,即我'希望能够在不发布架构的情况下在本地生成这些类型。

这可行吗?

【问题讨论】:

我还在放大工作流程之外使用 CDK。我使用了:“amplify add codegen --apiId xxxxxxxxx” ... 它允许选择 Typescript 作为生成选项。 【参考方案1】:

如果有一些自定义标量(例如 AWSDateTime)不属于您的 schema.graphql 文件,您可以创建一个单独的文件(例如 scalars.graphql)并自己添加那些缺少的类型定义:

scalar AWSDateTime
scalar AWSPhone
scalar AWSJSON

然后只需将一个 glob 传递给与这两个文件匹配的 GraphQL 代码生成器——它们将被组合成一个模式。

【讨论】:

以上是关于如果我不使用放大,如何从 AppSync GraphQL 架构生成 Typescript 定义?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS AppSync(带放大),如何允许经过身份验证的用户只读访问,但只允许对象所有者的突变?

使用 multiMatch 示例的 appsync 放大过滤器

放大未捕获的 AppSync 订阅(承诺中)

如何使用 AppSync 从 S3 下载公开可用的 pdf 和 png 文件

放大/反应 AppSync graphql 订阅 @auth 错误

如何将签名的 HTTP 请求从 AWS Lambda 发送到 AppSync GraphQL?