簡體   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