Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Membuat query dasar () VTLGraphQL 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 ekspresi GraphQL menjadi format yang dapat digunakan sumber data.
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
.
- Console
-
-
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.
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.
- API
-
-
Buat objek resolver dengan memanggil file. CreateResolver
API
-
Anda dapat memodifikasi bidang resolver Anda dengan memanggil file. UpdateResolver
API
- CLI
-
-
Buat resolver dengan menjalankan perintah. create-resolver
Anda harus mengetikkan 6 parameter untuk perintah khusus ini:
-
api-id
Dari AndaAPI.
-
type-name
Jenis yang ingin Anda modifikasi dalam skema Anda. Dalam contoh konsol, ini adalahQuery
.
-
field-name
Bidang yang ingin Anda modifikasi dalam tipe Anda. Dalam contoh konsol, ini adalahgetTodos
.
-
Sumber data yang Anda buat dalam panduan Melampirkan sumber data. data-source-name
-
Iturequest-mapping-template
, yang merupakan badan permintaan. Dalam contoh konsol, ini adalah:
{
"version" : "2017-02-28",
"operation" : "Scan"
}
-
Ituresponse-mapping-template
, yang merupakan tubuh respons. Dalam contoh konsol, ini adalah:
$util.toJson($ctx.result.items)
Contoh perintah mungkin terlihat seperti ini:
aws appsync create-resolver --api-id abcdefghijklmnopqrstuvwxyz --type-name Query --field-name getTodos --data-source-name TodoTable --request-mapping-template "{ "version" : "2017-02-28", "operation" : "Scan", }" --response-mapping-template ""$"util.toJson("$"ctx.result.items)"
Output akan dikembalikan diCLI. Inilah contohnya:
{
"resolver": {
"kind": "UNIT",
"dataSourceName": "TodoTable",
"requestMappingTemplate": "{ version : 2017-02-28, operation : Scan, }",
"resolverArn": "arn:aws:appsync:us-west-2:107289374856:apis/abcdefghijklmnopqrstuvwxyz/types/Query/resolvers/getTodos",
"typeName": "Query",
"fieldName": "getTodos",
"responseMappingTemplate": "$util.toJson($ctx.result.items)"
}
}
-
Untuk memodifikasi bidang resolver dan/atau template pemetaan, jalankan perintah. update-resolver
Dengan pengecualian api-id
parameter, parameter yang digunakan dalam create-resolver
perintah akan ditimpa oleh nilai-nilai baru dari update-resolver
perintah.
Menambahkan resolver untuk mutasi
Langkah selanjutnya adalah membuat resolver untuk tipe AndaMutation
.
- Console
-
-
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 kunci id
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.
- API
-
Anda juga dapat melakukan ini APIs dengan menggunakan perintah di bagian Create your first resolver dan rincian parameter dari bagian ini.
- CLI
-
Anda juga dapat melakukan ini CLI dengan menggunakan perintah di bagian Create your first resolver dan rincian parameter dari bagian ini.
Pada titik ini, jika Anda tidak menggunakan resolver lanjutan, Anda dapat mulai menggunakan GraphQL Anda seperti yang diuraikan API dalam Menggunakan. API
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.
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.
- Console
-
-
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 adalahAppSyncCommentTable
, 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 pada Todo
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 sederhana PutItem
dengan spesifik todoid
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)
- API
-
Anda juga dapat melakukan ini APIs dengan menggunakan perintah di bagian Create your first resolver dan rincian parameter dari bagian ini.
- CLI
-
Anda juga dapat melakukan ini CLI dengan menggunakan perintah di bagian Create your first resolver dan rincian parameter dari bagian ini.