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

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

教程:本地解析器

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

这时本地解析器就很方便。本地解析器仅将请求处理程序结果转发到响应处理程序,而不会调用远程数据源。字段解析是在 Amazon AppSync 中完成的。

在很多情况下,本地解析器是非常有用的。最常用的使用案例是在不触发数据源调用的情况下发布通知。为了说明该使用案例,让我们构建一个 pub/sub 应用程序,用户可以在其中发布和订阅消息。此示例利用了订阅,如果您不熟悉订阅,可以参考实时数据教程。

创建 pub/sub 应用程序

首先,创建一个空白的 GraphQL API,方法是选择从头开始设计选项,并在创建 GraphQL API 时配置可选的详细信息。

在我们的 pub/sub 应用程序中,客户端可以订阅和发布消息。每条发布的消息包含名称和数据。将以下内容添加到架构中:

type Channel { name: String! data: AWSJSON! } type Mutation { publish(name: String!, data: AWSJSON!): Channel } type Query { getChannel: Channel } type Subscription { subscribe(name: String!): Channel @aws_subscribe(mutations: ["publish"]) }

接下来,让我们将一个解析器附加到 Mutation.publish 字段。在架构窗格旁边的解析器窗格中,找到 Mutation 类型,找到 publish(...): Channel 字段,然后单击附加

创建一个 None 数据源,并将其命名为 PageDataSource。将其附加到您的解析器。

使用以下代码片段添加您的解析器实施:

export function request(ctx) { return { payload: ctx.args }; } export function response(ctx) { return ctx.result; }

确保您创建解析器并保存所做的更改。

发送和订阅消息

要让客户端接收消息,它们必须先订阅收件箱。

查询窗格中,执行 SubscribeToData 订阅:

subscription SubscribeToData { subscribe(name:"channel") { name data } }

每次调用 publish 变更时,只有在消息发送到 channel 订阅时,订阅者才会收到消息。让我们在查询窗格中试一下。当您的订阅仍在控制台中运行时,打开另一个控制台,并在查询窗格中运行以下请求:

注意

我们在该示例中使用有效的 JSON 字符串。

mutation PublishData { publish(data: "{\"msg\": \"hello world!\"}", name: "channel") { data name } }

结果类似下面这样:

{ "data": { "publish": { "data": "{\"msg\":\"hello world!\"}", "name": "channel" } } }

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