如果我不使用放大,如何从 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 从 S3 下载公开可用的 pdf 和 png 文件