繁体   English   中英

来自AWS无服务器反应应用程序的多个安全休息电话

[英]multiple secure rest call from aws serverless react app

我正在使用react-reduce,appsync graphql和数据库作为dynamoDB开发应用程序。 所以就像下面

React <--> GraphQL <-> (AppSync) <--> resolver <--> DynamoDB

现在需要明智的做法是,我需要调用多个基于SSL证书的REST API来获取数据,一旦从REST API中获取了数据,然后从DB中获取了其他数据。将这些数据合并并显示给UI。

例如,我需要在UI中显示用户数据,因此数据库具有该用户的50%数据,而我需要从多个Web服务调用中获取其余数据。

我已经考虑过几种选择,或者到目前为止,我已经探索了解决这种情况的几种方法。 例如

(Option:1) react <--> graphQL <--> AppSync <--> Pipeline Resolver (which will call one by one rest API call and then final resolver call will be DynamoDB) <--> REST API & DynamoDb

https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html

此选项UI不必合并数据,无论管道解析器产生什么,UI都可以显示。

(Option:2) react -- single Lambda Function (for all necessary REST API call), Next GraphQL call -- AppSync -- DynamoDB

在option:2中,UI必须从REST和DB获取数据,然后合并并显示。

(Option:3)

在此处输入图片说明

选项:3,我不确定它是否可行。 截至目前,我想出了以上选择。 在这种情况下寻找正确的方法或最佳做法。

因此,理想情况下,在AppSync中构建GraphQL网关时,其想法应该是UI开发人员不必考虑数据来源的机制,而只需要与特定于应用程序的高级实体一起工作即可。 在某些情况下,这并不是最佳选择,但需要努力。

如果REST API调用的结果仅映射到单个字段,则可以将嵌套的解析程序仅附加到该字段,即使有一个更高级别的解析程序正在从DynamoDB获取数据。 但是,如果该REST调用返回多个字段的值,或者依赖于其他REST调用中的数据,则此处使用管道解析器是有意义的。

您需要合并管道解析器中多个步骤的数据,以获取每个函数调用的输出,并将其添加到函数响应映射模板的$context.stash中,该模板是一个Map,在管道中的每个函数调用中均会持久存在解析器。 然后,在Pipeline Resolver的响应映射模板中,您可以从存储中读取并在模式中分配要为该类型返回的数据。

GraphQL在这种情况下的另一个好处是,当客户端UI不需要对象中的特定字段时,例如说在返回缓慢的数据库中找到了被省略的字段,则无需在查询中实际调用该数据库。解析器,因为客户端仅定义它需要的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM