Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
catatan
Kami sekarang terutama mendukung runtime APPSYNC _JS dan dokumentasinya. Harap pertimbangkan untuk menggunakan runtime APPSYNC _JS dan panduannya di sini.
GraphQL resolver menghubungkan bidang dalam skema tipe ke sumber data. Resolver adalah mekanisme dimana permintaan dipenuhi. AWS AppSync dapat secara otomatis membuat dan menghubungkan resolver dari skema atau membuat skema dan menghubungkan resolver dari tabel yang ada tanpa Anda perlu menulis kode apa pun.
Resolver AWS AppSync digunakan JavaScript untuk mengonversi ekspresi GraphQL menjadi format yang dapat digunakan sumber data. Atau, template pemetaan dapat ditulis dalam Apache Velocity Template Language (VTL) untuk mengonversi
Bagian ini akan menunjukkan cara mengkonfigurasi resolver menggunakan. VTL Panduan pemrograman gaya tutorial pengantar untuk menulis resolver dapat ditemukan di panduan pemrograman template pemetaan Resolver, dan utilitas pembantu yang tersedia untuk digunakan ketika pemrograman dapat ditemukan di referensi konteks template pemetaan Resolver. AWS AppSync juga memiliki alur pengujian dan debug bawaan yang dapat Anda gunakan saat mengedit atau menulis dari awal. Untuk informasi selengkapnya, lihat Menguji dan men-debug resolver.
Sebaiknya ikuti panduan ini sebelum mencoba menggunakan salah satu tutorial yang disebutkan di atas.
Di bagian ini, kita akan membahas cara membuat resolver, menambahkan resolver untuk mutasi, dan menggunakan konfigurasi lanjutan.
Buat resolver pertama Anda
Mengikuti contoh dari bagian sebelumnya, langkah pertama adalah membuat resolver untuk tipe AndaQuery
.
-
Masuk ke AWS Management Console dan buka AppSync konsol
. -
Di APIsdasbor, pilih GraphQL API Anda.
-
Di Sidebar, pilih Skema.
-
-
Di sisi kanan halaman, ada jendela yang disebut Resolvers. Kotak ini berisi daftar jenis dan bidang seperti yang didefinisikan dalam jendela Skema Anda di sisi kiri halaman. Anda dapat melampirkan resolver ke bidang. Misalnya, di bawah Jenis kueri, pilih Lampirkan di sebelah
getTodos
bidang. -
Pada halaman Create Resolver, pilih sumber data yang Anda buat dalam panduan Melampirkan sumber data. Di jendela Konfigurasikan templat pemetaan, Anda dapat memilih templat pemetaan permintaan umum dan respons menggunakan daftar drop-down di sebelah kanan atau menulis sendiri.
catatan
Pasangan template pemetaan permintaan ke template pemetaan respons disebut resolver unit. Resolver unit biasanya dimaksudkan untuk melakukan operasi hafalan; kami sarankan menggunakannya hanya untuk operasi tunggal dengan sejumlah kecil sumber data. Untuk operasi yang lebih kompleks, sebaiknya gunakan resolver pipa, yang dapat menjalankan beberapa operasi dengan beberapa sumber data secara berurutan.
Untuk informasi selengkapnya tentang perbedaan antara templat pemetaan permintaan dan respons, lihat Resolver unit.
Untuk informasi selengkapnya tentang penggunaan resolver pipeline, lihat Pipeline resolvers.
-
Untuk kasus penggunaan umum, AWS AppSync konsol memiliki templat bawaan yang dapat Anda gunakan untuk mendapatkan item dari sumber data (misalnya, semua kueri item, pencarian individual, dll.). Misalnya, pada versi sederhana skema dari Merancang skema Anda di mana
getTodos
tidak memiliki pagination, template pemetaan permintaan untuk item daftar adalah sebagai berikut:{ "version" : "2017-02-28", "operation" : "Scan" }
-
Anda selalu membutuhkan template pemetaan respons untuk menyertai permintaan. Konsol menyediakan default dengan nilai passthrough berikut untuk daftar:
$util.toJson($ctx.result.items)
Dalam contoh ini,
context
objek (alias sebagai$ctx
) untuk daftar item memiliki formulir$context.result.items
. Jika operasi GraphQL Anda mengembalikan satu item, itu akan menjadi.$context.result
AWS AppSync menyediakan fungsi pembantu untuk operasi umum, seperti$util.toJson
fungsi yang tercantum sebelumnya, untuk memformat respons dengan benar. Untuk daftar lengkap fungsi, lihat Referensi utilitas template pemetaan Resolver. -
Pilih Simpan Resolver.
Menambahkan resolver untuk mutasi
Langkah selanjutnya adalah membuat resolver untuk tipe AndaMutation
.
-
Masuk ke AWS Management Console dan buka AppSync konsol
. -
Di APIsdasbor, pilih GraphQL API Anda.
-
Di Sidebar, pilih Skema.
-
-
Di bawah jenis Mutasi, pilih Lampirkan di sebelah
addTodo
bidang. -
Pada halaman Create Resolver, pilih sumber data yang Anda buat dalam panduan Melampirkan sumber data.
-
Di jendela Configure mapping templates, Anda harus memodifikasi template permintaan karena ini adalah mutasi di mana Anda menambahkan item baru ke DynamoDB. Gunakan template pemetaan permintaan berikut:
{ "version" : "2017-02-28", "operation" : "PutItem", "key" : { "id" : $util.dynamodb.toDynamoDBJson($ctx.args.id) }, "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args) }
-
AWS AppSync secara otomatis mengonversi argumen yang ditentukan di
addTodo
bidang dari skema GraphQL Anda menjadi operasi DynamoDB. Contoh sebelumnya menyimpan catatan di DynamoDB menggunakan kunciid
dari, yang dilewatkan dari argumen mutasi sebagai.$ctx.args.id
Semua bidang lain yang Anda lewati secara otomatis dipetakan ke atribut DynamoDB.$util.dynamodb.toMapValuesJson($ctx.args)
Untuk resolver ini, gunakan template pemetaan respons berikut:
$util.toJson($ctx.result)
AWS AppSync juga mendukung alur kerja pengujian dan debug untuk mengedit resolver. Anda dapat menggunakan
context
objek tiruan untuk melihat nilai template yang diubah sebelum memanggil. Secara opsional, Anda dapat melihat eksekusi permintaan penuh ke sumber data secara interaktif saat menjalankan kueri. Untuk informasi selengkapnya, lihat Menguji dan men-debug resolver serta Monitoring dan logging. -
Pilih Simpan Resolver.
Resolver tingkat lanjut
Jika Anda mengikuti bagian Advanced dan Anda sedang membuat skema sampel dalam Merancang skema Anda untuk melakukan pemindaian paginasi, gunakan template permintaan berikut untuk bidang sebagai gantinya: getTodos
{
"version" : "2017-02-28",
"operation" : "Scan",
"limit": $util.defaultIfNull(${ctx.args.limit}, 20),
"nextToken": $util.toJson($util.defaultIfNullOrBlank($ctx.args.nextToken, null))
}
Untuk kasus penggunaan pagination ini, pemetaan respons lebih dari sekadar passthrough karena harus berisi kursor (sehingga klien tahu halaman apa yang akan dimulai selanjutnya) dan set hasil. Template pemetaan adalah sebagai berikut:
{
"todos": $util.toJson($context.result.items),
"nextToken": $util.toJson($context.result.nextToken)
}
Bidang dalam template pemetaan respons sebelumnya harus sesuai dengan bidang yang ditentukan dalam tipe Anda. TodoConnection
Untuk kasus relasi di mana Anda memiliki Comments
tabel dan Anda menyelesaikan kolom komentar pada Todo
tipe (yang mengembalikan tipe[Comment]
), Anda dapat menggunakan template pemetaan yang menjalankan kueri terhadap tabel kedua. Untuk melakukan ini, Anda harus sudah membuat sumber data untuk Comments
tabel seperti yang diuraikan dalam Melampirkan sumber data.
catatan
Kami menggunakan operasi kueri terhadap tabel kedua hanya untuk tujuan ilustrasi. Anda dapat menggunakan operasi lain terhadap DynamoDB sebagai gantinya. Selain itu, Anda dapat menarik data dari sumber data lain, seperti AWS Lambda atau Amazon OpenSearch Service, karena relasinya dikendalikan oleh skema GraphQL Anda.
-
Masuk ke AWS Management Console dan buka AppSync konsol
. -
Di APIsdasbor, pilih GraphQL API Anda.
-
Di Sidebar, pilih Skema.
-
-
Di bawah tipe Todo, pilih Lampirkan di sebelah
comments
bidang. -
Pada halaman Create Resolver, pilih sumber data tabel Komentar Anda. Nama default untuk tabel Komentar dari panduan mulai cepat adalah
AppSyncCommentTable
, tetapi dapat bervariasi tergantung pada nama yang Anda berikan. -
Tambahkan cuplikan berikut ke template pemetaan permintaan Anda:
{ "version": "2017-02-28", "operation": "Query", "index": "todoid-index", "query": { "expression": "todoid = :todoid", "expressionValues": { ":todoid": { "S": $util.toJson($context.source.id) } } } }
-
context.source
Referensi objek induk dari bidang saat ini yang sedang diselesaikan. Dalam contoh ini,source.id
mengacu padaTodo
objek individu, yang kemudian digunakan untuk ekspresi query.Anda dapat menggunakan template pemetaan respons passthrough sebagai berikut:
$util.toJson($ctx.result.items)
-
Pilih Simpan Resolver.
-
Terakhir, kembali ke halaman Skema di konsol, lampirkan resolver ke
addComment
bidang, dan tentukan sumber data untuk tabel.Comments
Templat pemetaan permintaan dalam hal ini sederhanaPutItem
dengan spesifiktodoid
yang dikomentari sebagai argumen, tetapi Anda menggunakan$utils.autoId()
utilitas untuk membuat kunci pengurutan unik untuk komentar sebagai berikut:{ "version": "2017-02-28", "operation": "PutItem", "key": { "todoid": { "S": $util.toJson($context.arguments.todoid) }, "commentid": { "S": "$util.autoId()" } }, "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args) }
Gunakan template respons passthrough sebagai berikut:
$util.toJson($ctx.result)