Utilizzo di resolver locali in AWS AppSync - AWS AppSync

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di resolver locali in AWS AppSync

AWS AppSync consente di utilizzare fonti di dati supportate (AWS Lambda Amazon DynamoDB o OpenSearch Amazon Service) per eseguire varie operazioni. In alcuni scenari, tuttavia, una chiamata a un'origine dati supportata può non essere necessaria.

È in queste situazioni che il resolver locale risulta utile. Invece di chiamare una fonte di dati remota, il resolver locale inoltrerà semplicemente il risultato del gestore della richiesta al gestore della risposta. La risoluzione del campo rimarrà in AWS AppSync.

I resolver locali sono utili in una miriade di situazioni. Quello più comune è la pubblicazione di notifiche senza attivare una chiamata a un'origine dati. Per dimostrare questo caso d'uso, creiamo un'applicazione pub/sub in cui gli utenti possano pubblicare e iscriversi ai messaggi. In questo esempio vengono usate le sottoscrizioni. Quindi, se non hai familiarità con le sottoscrizioni, puoi seguire il tutorial Dati in tempo reale.

Creazione dell'app pub/sub

Innanzitutto, crea un GraphQL vuoto API scegliendo l'opzione Design from scratch e configurando i dettagli opzionali durante la creazione di GraphQL. API

Nella nostra applicazione pub/sub, i clienti possono iscriversi e pubblicare messaggi. Ogni messaggio pubblicato include un nome e dei dati. Aggiungi questo allo schema:

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"]) }

Quindi, colleghiamo un resolver al Mutation.publish campo. Nel riquadro Resolver accanto al riquadro Schema, trova il Mutation tipo, quindi il publish(...): Channel campo, quindi fai clic su Allega.

Crea una fonte di dati Nessuno e assegnale un nome. PageDataSource Collegalo al tuo resolver.

Aggiungi l'implementazione del tuo resolver utilizzando il seguente frammento:

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

Assicurati di creare il resolver e di salvare le modifiche apportate.

Invia e sottoscrivi messaggi

Affinché i clienti possano ricevere messaggi, devono prima essere iscritti a una casella di posta.

Nel riquadro Query, esegui l'abbonamento: SubscribeToData

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

Il sottoscrittore riceverà messaggi ogni volta che viene richiamata la publish mutazione, ma solo quando il messaggio viene inviato all'abbonamento. channel Proviamo a farlo nel riquadro Query. Mentre l'abbonamento è ancora in esecuzione nella console, apri un'altra console ed esegui la seguente richiesta nel riquadro Query:

Nota

In questo esempio utilizziamo JSON stringhe valide.

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

Il risultato sarà simile al seguente:

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

Abbiamo appena dimostrato l'uso dei resolver locali, pubblicando un messaggio e ricevendolo senza uscire dal servizio. AWS AppSync