在 中使用本機解析器 AWS AppSync - AWS AppSync

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 中使用本機解析器 AWS AppSync

AWS AppSync 可讓您使用支援的資料來源 (AWS Lambda、Amazon DynamoDB 或 Amazon OpenSearch Service) 來執行各種操作。不過,在某些情況下,可能不需要呼叫支援的資料來源。

這就是本機解析程式的實用之處。本機解析程式不會呼叫遠端資料來源,而是將請求處理常式的結果轉送給回應處理常式。欄位解析度不會離開 AWS AppSync。

本機解析器在許多情況下都很有用。最常見的使用案例是發佈通知而不觸發資料來源呼叫。為了示範此使用案例,讓我們建立一個 pub/sub 應用程式,使用者可以在其中發佈和訂閱訊息。此範例使用訂閱,因此,如果您不熟悉訂閱,可以遵循即時資料教學課程。

建立 pub/sub 應用程式

首先,在建立 GraphQL 時,選擇從頭開始設計選項並設定選用詳細資訊,API以建立空白的 GraphQLAPI。

在我們的 pub/sub 應用程式中,用戶端可以訂閱和發佈訊息。每個已發佈的訊息都包含名稱和資料。將此新增至結構描述:

type Channel { name: String! data: AWSJSON! } type Mutation { publish(name: String!, data: AWSJSON!): Channel } type Query { getChannel: Channel } type Subscription { subscribe(name: String!): Channel @aws_subscribe(mutations: ["publish"]) }

接下來,讓我們將解析器連接至 Mutation.publish 欄位。在結構描述窗格旁的解析程式窗格中,尋找Mutation類型,然後尋找 publish(...): Channel 欄位,然後按一下連接

建立資料來源並命名為 PageDataSource。將其連接至您的解析器。

使用下列程式碼片段新增您的解析程式實作:

export function request(ctx) { return { payload: ctx.args }; } export function response(ctx) { return ctx.result; }

請確定您建立解析器並儲存所做的變更。

傳送和訂閱訊息

若要讓用戶端接收訊息,必須先訂閱收件匣。

查詢窗格中,執行SubscribeToData訂閱:

subscription SubscribeToData { subscribe(name:"channel") { name data } }

每當呼叫publish突變時,訂閱者都會收到訊息,但只會在訊息傳送至channel訂閱時收到訊息。讓我們在查詢窗格中試試看。當您的訂閱仍在主控台中執行時,請開啟另一個主控台,並在查詢窗格中執行下列請求:

注意

在此範例中,我們使用有效的JSON字串。

mutation PublishData { publish(data: "{\"msg\": \"hello world!\"}", name: "channel") { data name } }

結果看起來像這樣:

{ "data": { "publish": { "data": "{\"msg\":\"hello world!\"}", "name": "channel" } } }

我們剛剛透過發佈訊息並接收訊息,而不離開 AWS AppSync 服務,示範本機解析程式的使用方式。