如何使用 Amplify 为 GraphQL API (AWS AppSync) 生成类
Posted
技术标签:
【中文标题】如何使用 Amplify 为 GraphQL API (AWS AppSync) 生成类【英文标题】:How to generate classes for GraphQL API (AWS AppSync) using Amplify 【发布时间】:2020-08-20 23:43:03 【问题描述】:我在 AWS AppSync 上有一个由其他人推送的 GraphQL API,我想连接到它并在我的 android 应用程序中获取数据。根据 AWS 文档,要将 API 与我的应用程序集成,我应该执行以下 3 个命令:
npm install -g @aws-amplify/cli
amplify init
amplify add codegen --apiId xxxxxx
之后,我需要基于 graphql 模式生成 Java 类。我执行 amplify codegen models
但收到错误“未配置 AppSync API。请添加 API”。如果执行amplify add api
,我会得到“您的项目中已经有一个 AppSync API。使用“amplify update api”命令更新您现有的 AppSync API。”
为什么我不能生成类?
aws-amplify/cli v4.18.1
【问题讨论】:
【参考方案1】:在运行amplify codegen models
之前尝试运行amplify pull
拉取最新的后端环境。
【讨论】:
amplify pull
失败并出现错误:“错误:EPERM:不允许操作,stat '..\amplify\backend'”
有趣,你能告诉我你的目录和你在哪里运行amplify pull
吗?
我从 Android Studio 项目根目录运行它。我发现了问题所在,感谢您的帮助。【参考方案2】:
您应该使用 Amplify Mobile SDK 而不是 Amplify Libraries 来为在 AWS 控制台中创建的 API 生成类。您必须使用不同的生成方法确实令人困惑。此外,在 API 概述中的 AWS 上,有一个错误的链接将您指向的不是移动 sdk,而是库。
在控制台中创建的 API 的生成过程在 在控制台中创建的代码生成/AppSync APIs中进行了描述https://docs.amplify.aws/sdk/api/graphql/q/platform/android#code-generation
【讨论】:
以上是关于如何使用 Amplify 为 GraphQL API (AWS AppSync) 生成类的主要内容,如果未能解决你的问题,请参考以下文章
AWS Amplify AppSync GraphQL @Auth 指令:如何禁止为公共用户列出元素
AppSync/Amplify - 如何定义 GraphQL 订阅
@connection 上的 AWS Amplify Graphql 查询
如何使用 amplify 将 GraphQL 更改从 Appsync 同步到 Android?