在中使用本地解析器 AWS AppSync - AWS AppSync

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在中使用本地解析器 AWS AppSync

注意

我们现在主要支持 APPSYNC _JS 运行时及其文档。请考虑在此处使用 APPSYNC _JS 运行时及其指南。

AWS AppSync 允许您使用支持的数据源(AWS Lambda亚马逊 DynamoDB 或 OpenSearch 亚马逊服务)来执行各种操作。但在某些情况下,可能不必调用支持的数据来源。

这时本地解析器就很方便。本地解析器无需调用远程数据来源,只需将请求映射模板的结果转发到响应映射模板。不会离开 AWS AppSync 进行字段解析。

在许多使用案例中本地解析器都很有用。最常用的使用案例是在不触发数据来源调用的情况下发布通知。要演示此使用案例,让我们构建一个传呼应用程序,用户可互相呼叫。此示例利用了订阅,如果您不熟悉订阅,可以参考实时数据教程。

创建呼叫应用程序

在我们的呼叫应用程序中,客户端可以订阅收件箱,并向其他客户端发送呼叫。每个呼叫包含一条消息。以下是架构:

schema { query: Query mutation: Mutation subscription: Subscription } type Subscription { inbox(to: String!): Page @aws_subscribe(mutations: ["page"]) } type Mutation { page(body: String!, to: String!): Page! } type Page { from: String to: String! body: String! sentAt: String! } type Query { me: String }

让我们在 Mutation.page 字段上附加一个解析器。在 Schema (架构) 窗格中,单击右侧面板中字段定义旁的 Attach Resolver (附加解析器)。创建一个类型为 None 的新数据源并将其命名PageDataSource

在请求映射模板中输入:

{ "version": "2017-02-28", "payload": { "body": $util.toJson($context.arguments.body), "from": $util.toJson($context.identity.username), "to": $util.toJson($context.arguments.to), "sentAt": "$util.time.nowISO8601()" } }

对于响应映射模板,选择默认的 Forward the result (转发结果)。保存解析器。您的应用程序现在已经就绪,让我们开始呼叫吧!

发送呼叫和订阅呼叫

接收呼叫的客户端必须首先订阅收件箱。

让我们在 Queries (查询) 窗格中执行 inbox 订阅:

subscription Inbox { inbox(to: "Nadia") { body to from sentAt } }

每次调用 Mutation.page 变更时,Nadia 都会收到页面。执行变更可进行调用:

mutation Page { page(to: "Nadia", body: "Hello, World!") { body to from sentAt } }

我们刚刚演示了本地解析器的使用,即发送页面并在不离开 AWS AppSync的情况下接收页面。