本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在中配置解析器 AWS AppSync
在前面的章节中,您学习了如何创建 GraphQL 架构和数据源,然后在服务中将它们链接在一起。 AWS AppSync 在您的架构中,您可能已在查询和变更中创建了一个或多个字段(操作)。虽然该架构描述了操作从数据来源请求的数据类型,但从未实施这些操作如何处理数据的行为。
操作的行为始终是在解析器中实施的,解析器将链接到执行操作的字段。有关解析器一般如何工作的更多信息,请参阅解析器页面。
在中 AWS AppSync,您的解析器与运行时绑定,运行时是您的解析器执行的环境。运行时系统决定了编写解析器时使用的语言。目前支持两种运行时:APPSYNC_JS (JavaScript) 和 Apache Velocity 模板语言 ()。VTL
在实施解析器时,它们采用通用的结构:
-
预备步骤:在客户端发出请求时,将为使用的架构字段(通常是查询、变更、订阅)的解析器传送请求的数据。解析器开始使用预备步骤处理程序处理请求数据,该处理程序允许在数据传送到解析器之前执行一些预处理操作。
-
函数:在运行预备步骤后,请求传送到函数列表。将对数据来源执行列表中的第一个函数。函数是解析器代码的子集,其中包含自己的请求和响应处理程序。请求处理程序将获取请求数据,并对数据来源执行操作。在将数据来源的响应传回到列表之前,响应处理程序对其进行处理。如果具有多个函数,请求数据将发送到列表中的下一个函数以进行执行。列表中的函数按照开发人员定义的顺序依次执行。在执行所有函数后,最终结果传送到后续步骤。
-
后续步骤:后续步骤是一个处理程序函数,允许您在将最终函数的响应传送到 GraphQL 响应之前对其执行一些最终操作。
该流程是一个管道解析器示例。在两个运行时系统中都支持管道解析器。不过,这仅简要说明了管道解析器的用途。此外,我们仅介绍一种可能的解析器配置。有关支持的解析器配置的更多信息,请参阅 APPSYNC _JS 的JavaScript 解析器概述或解析器映射模板概述。VTL
正如您看到的一样,解析器是模块化的。要使解析器的组件正常工作,它们必须能够从其他组件了解执行状态。从解析器一节中,您知道可以将有关执行状态的重要信息作为一组参数(args
、context
等)传递给解析器中的每个组件。在中 AWS AppSync,这由严格处理context
。它是一个容器,用于存放有关解析的字段的信息。这可能包括传递的参数、结果、授权数据、标头数据等所有内容。有关上下文的更多信息,请参阅 APPSYNC _JS 的解析器上下文对象参考或解析器映射模板上下文参考。VTL
上下文并不是你可以用来实现解析器的唯一工具。 AWS AppSync 支持各种用于值生成、错误处理、解析、转换等的实用工具。你可以在这里查看 APPSYNC _JS 的实用程序列表,也可以在这里查看。VTL
在以下各节中,您将学习如何在 GraphQL API 中配置解析器。