本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中設定解析程式 AWS AppSync
在前幾節中,您學習了如何建立 GraphQL 結構描述和資料來源,然後在 AWS AppSync 服務中將其連結在一起。在結構描述中,您可能已在查詢和突變中建立一或多個欄位 (操作)。雖然結構描述了操作從資料來源請求的資料類型,但它從未實作這些操作在資料周圍的行為方式。
操作的行為一律會在解析器中實作,該解析器會連結到執行操作的欄位。如需解析程式如何運作的一般詳細資訊,請參閱解析程式頁面。
在 中 AWS AppSync,您的解析器與執行期相關聯,執行期是解析器執行的環境。Runtimes 會指定您的解析器要寫入的語言。目前支援兩種執行時間:APPSYNC_JS (JavaScript) 和 Apache Velocity 範本語言 (VTL)。
實作解析程式時,會遵循一般結構:
-
在步驟 之前:當用戶端提出請求時,所使用結構描述欄位的解析器 (通常是您的查詢、突變、訂閱) 會傳遞請求資料。解析器會開始在步驟處理常式之前使用 處理請求資料,這允許在資料移動到解析器之前執行一些預先處理操作。
-
Function(s):在步驟執行之前,請求會傳遞至函數清單。清單中的第一個函數會根據資料來源執行。函數是解析程式程式碼的子集,其中包含自己的請求和回應處理常式。請求處理常式會取得請求資料,並針對資料來源執行操作。回應處理常式會先處理資料來源的回應,再將其傳回清單。如果有一個以上的函數,則請求資料會傳送至清單中要執行的下一個函數。清單中的函數將依開發人員定義的順序序列執行。執行所有函數後,最終結果會傳遞至後續步驟。
-
步驟 之後:步驟 之後是處理常式函數,可讓您在最終函數的回應上執行一些最終操作,然後再將其傳遞至 GraphQL 回應。
此流程是管道解析程式的範例。兩個執行期都支援管道解析器。不過,這是管道解析程式可以執行的操作的簡化說明。此外,我們只描述一個可能的解析器組態。如需支援的解析器組態的詳細資訊,請參閱 APPSYNC_JS 的JavaScript 解析器概觀或 的解析器映射範本概觀VTL。
如您所見,解析器是模組化的。為了讓解析器的元件正常運作,它們必須能夠對等其他元件的執行狀態。從解析程式區段中,您知道解析程式中的每個元件都可以作為一組引數 (args
、 context
等) 傳遞有關執行狀態的重要資訊。在 中 AWS AppSync,這由 嚴格處理context
。它是容器,用於提供正在解析之欄位的相關資訊。這可以包含從傳遞的引數、結果、授權資料、標頭資料等的所有內容。如需內容的詳細資訊,請參閱 APPSYNC_JS 的 Resolver 內容物件參考或 的 Resolver 對應範本內容參考VTL。
內容不是您用來實作解析程式的唯一工具。 AWS AppSync 支援產生值、錯誤處理、剖析、轉換等各種公用程式。您可以在此處查看適用於 APPSYNC_JS 的公用程式清單,或是適用於 的公用程式清單VTL。
在下列各節中,您將了解如何在 GraphQL 中設定解析器API。