如何使用 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?

如果我有登录用户的访问令牌,如何使用 AWS Amplify GraphQL API?

带有 AWS Amplify 的 GraphQL - 如何启用对查询的排序