

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

# Membuat kueri dasar (VTL)
<a name="configuring-resolvers"></a>

**catatan**  
Kami sekarang terutama mendukung runtime APPSYNC\_JS dan dokumentasinya. [Harap pertimbangkan untuk menggunakan runtime APPSYNC\_JS dan panduannya di sini.](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers-js.html)

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](https://velocity.apache.org/engine/2.0/vtl-reference.html) mengubah 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](resolver-mapping-template-reference-programming-guide.md#aws-appsync-resolver-mapping-template-reference-programming-guide) dapat ditemukan di referensi konteks template pemetaan Resolver.](resolver-context-reference.md#aws-appsync-resolver-mapping-template-context-reference) 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](test-debug-resolvers.md#aws-appsync-test-debug-resolvers).

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
<a name="create-your-first-resolver"></a>

Mengikuti contoh dari bagian sebelumnya, langkah pertama adalah membuat resolver untuk tipe Anda`Query`.

------
#### [ Console ]

1. Masuk ke Konsol Manajemen AWS dan buka [AppSync konsol](https://console.aws.amazon.com/appsync/).

   1. Di **APIs dasbor**, pilih GraphQL API Anda.

   1. Di **Sidebar**, pilih **Skema**.

1. 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.

1. Pada halaman **Create Resolver**, pilih sumber data yang Anda buat dalam panduan [Melampirkan sumber data](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html). 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](https://docs.aws.amazon.com//appsync/latest/devguide/resolver-mapping-template-reference-overview.html#unit-resolvers).  
Untuk informasi selengkapnya tentang penggunaan resolver pipeline, lihat [Pipeline](pipeline-resolvers.md#aws-appsync-pipeline-resolvers) resolvers.

1. 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](designing-your-schema.md#aws-appsync-designing-your-schema) di mana `getTodos` tidak memiliki pagination, template pemetaan permintaan untuk item daftar adalah sebagai berikut:

   ```
   {
       "version" : "2017-02-28",
       "operation" : "Scan"
   }
   ```

1. 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](resolver-util-reference.md#aws-appsync-resolver-mapping-template-util-reference).

1. Pilih **Simpan Resolver**.

------
#### [ API ]

1. Buat objek resolver dengan memanggil API. [https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateResolver.html](https://docs.aws.amazon.com/appsync/latest/APIReference/API_CreateResolver.html)

1. Anda dapat memodifikasi bidang resolver dengan memanggil API. [https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateResolver.html](https://docs.aws.amazon.com/appsync/latest/APIReference/API_UpdateResolver.html)

------
#### [ CLI ]

1. Buat resolver dengan menjalankan perintah. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/create-resolver.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/create-resolver.html)

   Anda harus mengetikkan 6 parameter untuk perintah khusus ini:

   1. API Anda. `api-id`

   1. `type-name`Jenis yang ingin Anda modifikasi dalam skema Anda. Dalam contoh konsol, ini adalah`Query`.

   1. `field-name`Bidang yang ingin Anda modifikasi dalam tipe Anda. Dalam contoh konsol, ini adalah`getTodos`.

   1. Sumber data yang Anda buat dalam panduan [Melampirkan sumber data](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html). `data-source-name`

   1. Itu`request-mapping-template`, yang merupakan badan permintaan. Dalam contoh konsol, ini adalah:

      ```
      {
          "version" : "2017-02-28",
          "operation" : "Scan"
      }
      ```

   1. Itu`response-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 dalam CLI. 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)"
       }
   }
   ```

1. Untuk memodifikasi templat and/or pemetaan bidang resolver, jalankan perintah. [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/update-resolver.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/appsync/update-resolver.html)

   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
<a name="adding-a-resolver-for-mutations"></a>

Langkah selanjutnya adalah membuat resolver untuk tipe Anda`Mutation`.

------
#### [ Console ]

1. Masuk ke Konsol Manajemen AWS dan buka [AppSync konsol](https://console.aws.amazon.com/appsync/).

   1. Di **APIs dasbor**, pilih GraphQL API Anda.

   1. Di **Sidebar**, pilih **Skema**.

1. Di bawah jenis **Mutasi**, pilih **Lampirkan** di sebelah `addTodo` bidang.

1. Pada halaman **Create Resolver**, pilih sumber data yang Anda buat dalam panduan [Melampirkan sumber data](https://docs.aws.amazon.com/appsync/latest/devguide/attaching-a-data-source.html).

1. 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)
   }
   ```

1. 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](test-debug-resolvers.md#aws-appsync-test-debug-resolvers) serta [Monitoring](monitoring.md#aws-appsync-monitoring) dan logging.

1. Pilih **Simpan Resolver**.

------
#### [ API ]

Anda juga dapat melakukan ini APIs dengan menggunakan perintah di bagian [Create your first resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) dan rincian parameter dari bagian ini.

------
#### [ CLI ]

Anda juga dapat melakukan ini di CLI dengan memanfaatkan perintah di bagian [Create your first resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) dan rincian parameter dari bagian ini.

------

[Pada titik ini, jika Anda tidak menggunakan resolver lanjutan, Anda dapat mulai menggunakan GraphQL API seperti yang diuraikan dalam Menggunakan API Anda.](using-your-api.md#aws-appsync-using-your-api)

## Resolver tingkat lanjut
<a name="advanced-resolvers"></a>

Jika Anda mengikuti bagian Advanced dan Anda sedang membuat skema sampel dalam [Merancang skema Anda](designing-your-schema.md#aws-appsync-designing-your-schema) 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](attaching-a-data-source.md#aws-appsync-getting-started-build-a-schema-from-scratch).

**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.

------
#### [ Console ]

1. Masuk ke Konsol Manajemen AWS dan buka [AppSync konsol](https://console.aws.amazon.com/appsync/).

   1. Di **APIs dasbor**, pilih GraphQL API Anda.

   1. Di **Sidebar**, pilih **Skema**.

1. Di bawah tipe **Todo**, pilih **Lampirkan** di sebelah `comments` bidang.

1. 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.

1. 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)
               }
           }
       }
   }
   ```

1. `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)
   ```

1. Pilih **Simpan Resolver**.

1. 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 respon passthrough sebagai berikut:

   ```
   $util.toJson($ctx.result)
   ```

------
#### [ API ]

Anda juga dapat melakukan ini APIs dengan menggunakan perintah di bagian [Create your first resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) dan rincian parameter dari bagian ini.

------
#### [ CLI ]

Anda juga dapat melakukan ini di CLI dengan memanfaatkan perintah di bagian [Create your first resolver](https://docs.aws.amazon.com/appsync/latest/devguide/configuring-resolvers.html#create-your-first-resolver) dan rincian parameter dari bagian ini.

------