教程:本地解析器 - Amazon AppSync
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

教程:本地解析器

注意

我们现在主要支持 APPSYNC_JS 运行时环境及其文档。请考虑使用 APPSYNC_JS 运行时环境和此处的指南。

Amazon AppSync 允许您使用支持的数据源(Amazon Lambda、Amazon DynamoDB 或 Amazon OpenSearch Service)执行各种操作。但在某些情况下,可能不必调用支持的数据源。

这时本地解析器就很方便。本地解析器无需调用远程数据源,只需将请求映射模板的结果转发到响应映射模板。字段解析是在 Amazon 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 } }

我们刚刚说明了如何使用本地解析器,即,在不离开 Amazon AppSync 的情况下发送和接收页面。