Mengkonfigurasi dan menggunakan resolver pipeline di () AWS AppSync JavaScript - AWS AppSync

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengkonfigurasi dan menggunakan resolver pipeline di () AWS AppSync JavaScript

AWS AppSync mengeksekusi resolver pada bidang GraphQL. Dalam beberapa kasus, aplikasi memerlukan eksekusi beberapa operasi untuk menyelesaikan satu bidang GraphQL. Dengan resolver pipeline, pengembang sekarang dapat membuat operasi yang disebut Fungsi dan menjalankannya secara berurutan. Pipeline resolver berguna untuk aplikasi yang, misalnya, memerlukan pemeriksaan otorisasi sebelum mengambil data untuk bidang.

Untuk informasi selengkapnya tentang arsitektur resolver JavaScript pipeline, lihat ikhtisar JavaScriptresolver.

Langkah 1: Membuat resolver pipa

Di AWS AppSync konsol, buka halaman Skema.

Simpan skema berikut:

schema { query: Query mutation: Mutation } type Mutation { signUp(input: Signup): User } type Query { getUser(id: ID!): User } input Signup { username: String! email: String! } type User { id: ID! username: String email: AWSEmail }

Kita akan memasang resolver pipa ke signUpbidang pada tipe Mutasi. Pada tipe Mutasi di sisi kanan, pilih Lampirkan di sebelah bidang signUp mutasi. Atur resolver ke pipeline resolver dan APPSYNC_JS runtime, lalu buat resolver.

Pipeline resolver kami mendaftarkan pengguna dengan terlebih dahulu memvalidasi input alamat email dan kemudian menyimpan pengguna dalam sistem. Kami akan merangkum validasi email di dalam validateEmailfungsi dan penyimpanan pengguna di dalam suatu fungsi. saveUser validateEmailFungsi dijalankan terlebih dahulu, dan jika email valid, maka saveUserfungsi dijalankan.

Alur eksekusi adalah sebagai berikut:

  1. Mutasi. signUp penangan permintaan resolver

  2. validateEmail fungsi

  3. saveUser fungsi

  4. Mutasi. signUp penangan respons penyelesai

Karena kita mungkin akan menggunakan kembali validateEmailfungsi di resolver lain pada kitaAPI, kita ingin menghindari mengakses ctx.args karena ini akan berubah dari satu bidang GraphQL ke bidang GraphQL lainnya. Sebagai gantinya, kita dapat menggunakan ctx.stash untuk menyimpan atribut email dari argumen field signUp(input: Signup) input.

Perbarui kode resolver Anda dengan mengganti fungsi permintaan dan respons Anda:

export function request(ctx) { ctx.stash.email = ctx.args.input.email return {}; } export function response(ctx) { return ctx.prev.result; }

Pilih Buat atau Simpan untuk memperbarui resolver.

Langkah 2: Membuat fungsi

Dari halaman resolver pipeline, di bagian Functions, klik Add function, lalu Create new function. Dimungkinkan juga untuk membuat fungsi tanpa melalui halaman resolver; untuk melakukan ini, di AWS AppSync konsol, buka halaman Fungsi. Pilih tombol Create Function. Mari buat fungsi yang memeriksa apakah email valid dan berasal dari domain tertentu. Jika email tidak valid, fungsi tersebut menimbulkan kesalahan. Jika tidak, itu meneruskan input apa pun yang diberikan.

Pastikan Anda telah membuat sumber data dari NONEjenis tersebut. Pilih sumber data ini di daftar Nama sumber data. Untuk nama fungsi, masukkanvalidateEmail. Di area kode fungsi, timpa semuanya dengan cuplikan ini:

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { email } = ctx.stash; const valid = util.matches( '^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(myvaliddomain)\.com', email ); if (!valid) { util.error(`"${email}" is not a valid email.`); } return { payload: { email } }; } export function response(ctx) { return ctx.result; }

Tinjau input Anda, lalu pilih Buat. Kami baru saja menciptakan validateEmailfungsi kami. Ulangi langkah-langkah ini untuk membuat saveUserfungsi dengan kode berikut (Demi kesederhanaan, kami menggunakan sumber NONEdata dan berpura-pura pengguna telah disimpan dalam sistem setelah fungsi dijalankan. ):

import { util } from '@aws-appsync/utils'; export function request(ctx) { return ctx.prev.result; } export function response(ctx) { ctx.result.id = util.autoId(); return ctx.result; }

Kami baru saja menciptakan saveUserfungsi kami.

Langkah 3: Menambahkan fungsi ke resolver pipa

Fungsi kita seharusnya ditambahkan secara otomatis ke resolver pipeline yang baru saja kita buat. Jika ini tidak terjadi, atau Anda membuat fungsi melalui halaman Fungsi, Anda dapat mengklik Tambah fungsi kembali pada halaman signUp resolver untuk melampirkannya. Tambahkan saveUserfungsi validateEmaildan fungsi ke resolver. validateEmailFungsi harus ditempatkan sebelum saveUserfungsi. Saat Anda menambahkan lebih banyak fungsi, Anda dapat menggunakan opsi pindah ke atas dan bergerak ke bawah untuk mengatur ulang urutan eksekusi fungsi Anda. Tinjau perubahan Anda, lalu pilih Simpan.

Langkah 4: Menjalankan kueri

Di AWS AppSync konsol, buka halaman Kueri. Di penjelajah, pastikan Anda menggunakan mutasi Anda. Jika tidak, pilih Mutation di daftar drop-down, lalu pilih+. Masukkan kueri berikut:

mutation { signUp(input: {email: "nadia@myvaliddomain.com", username: "nadia"}) { id username } }

Ini harus mengembalikan sesuatu seperti:

{ "data": { "signUp": { "id": "256b6cc2-4694-46f4-a55e-8cb14cc5d7fc", "username": "nadia" } } }

Kami telah berhasil mendaftarkan pengguna kami dan memvalidasi email input menggunakan resolver pipeline.