本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中使用本機解析器 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 服務,示範本機解析程式的使用方式。