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

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

步骤 3:配置解析器

在前面的章节中,您学习了如何创建 GraphQL 架构和数据源,然后在服务中将它们链接在一起。 Amazon AppSync 在您的架构中,您可能已在查询和变更中创建了一个或多个字段(操作)。虽然该架构描述了操作从数据来源请求的数据类型,但从未实施这些操作如何处理数据的行为。

操作的行为始终是在解析器中实施的,解析器将链接到执行操作的字段。有关解析器一般如何工作的更多信息,请参阅解析器页面。

在中 Amazon AppSync,您的解析器与运行时绑定,运行时是您的解析器执行的环境。运行时系统决定了编写解析器时使用的语言。目前支持两种运行时:APPSYNC_JS (JavaScript) 和 Apache Velocity 模板语言 (VTL)。

在实施解析器时,它们采用通用的结构:

  • 预备步骤:在客户端发出请求时,将为使用的架构字段(通常是查询、变更、订阅)的解析器传送请求的数据。解析器开始使用预备步骤处理程序处理请求数据,该处理程序允许在数据传送到解析器之前执行一些预处理操作。

  • 函数:在运行预备步骤后,请求传送到函数列表。将对数据来源执行列表中的第一个函数。函数是解析器代码的子集,其中包含自己的请求和响应处理程序。请求处理程序将获取请求数据,并对数据来源执行操作。在将数据来源的响应传回到列表之前,响应处理程序对其进行处理。如果具有多个函数,请求数据将发送到列表中的下一个函数以进行执行。列表中的函数按照开发人员定义的顺序依次执行。在执行所有函数后,最终结果传送到后续步骤。

  • 后续步骤:后续步骤是一个处理程序函数,允许您在将最终函数的响应传送到 GraphQL 响应之前对其执行一些最终操作。

该流程是一个管道解析器示例。在两个运行时系统中都支持管道解析器。不过,这仅简要说明了管道解析器的用途。此外,我们仅介绍一种可能的解析器配置。有关支持的解析器配置的更多信息,请参阅 APPSYNC_JS 的JavaScript 解析器概述或 VTL 的解析器映射模板概述。

正如您看到的一样,解析器是模块化的。要使解析器的组件正常工作,它们必须能够从其他组件了解执行状态。从解析器一节中,您知道可以将有关执行状态的重要信息作为一组参数(argscontext 等)传递给解析器中的每个组件。在中 Amazon AppSync,这由严格处理context。它是一个容器,用于存放有关解析的字段的信息。这可能包括传递的参数、结果、授权数据、标头数据等所有内容。有关上下文的更多信息,请参阅适用于 APPSYNC_JS 的解析器上下文对象参考或适用于 VTL 的解析器映射模板上下文参考

上下文并不是你可以用来实现解析器的唯一工具。 Amazon AppSync 支持各种用于值生成、错误处理、解析、转换等的实用工具。您可以在此处查看 APPSYNC_JS 的实用程序列表,或者在此处查看 VTL 的实用程序列表。

在以下几节中,您将了解如何在 GraphQL API 中配置解析器。