

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

# Menyiapkan respons gateway untuk REST API menggunakan konsol API Gateway
<a name="set-up-gateway-response-using-the-console"></a>

Contoh berikut menunjukkan cara menyiapkan respons gateway untuk REST API menggunakan konsol API Gateway 

**Untuk menyesuaikan respons gateway menggunakan konsol API Gateway**

1. Masuk ke konsol API Gateway di [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Pilih REST API.

1. Di panel navigasi utama, pilih **Respons Gateway**.

1. Pilih jenis respons, lalu pilih **Edit**. Dalam panduan ini, kami menggunakan **token otentikasi Hilang sebagai contoh**. 

1. Anda dapat mengubah kode Status yang dihasilkan API Gateway untuk **menampilkan kode status** berbeda yang memenuhi persyaratan API Anda. Dalam contoh ini, kustomisasi mengubah kode status dari default (`403`) menjadi `404` karena pesan kesalahan ini terjadi ketika klien memanggil sumber daya yang tidak didukung atau tidak valid yang dapat dianggap sebagai tidak ditemukan.

1. Untuk mengembalikan header khusus, pilih **Tambahkan header respons di bawah Header** **respons**. Untuk tujuan ilustrasi, kami menambahkan header khusus berikut: 

   ```
   Access-Control-Allow-Origin:'a.b.c'
   x-request-id:method.request.header.x-amzn-RequestId
   x-request-path:method.request.path.petId
   x-request-query:method.request.querystring.q
   ```

   Dalam pemetaan header sebelumnya, nama domain statis (`'a.b.c'`) dipetakan ke `Allow-Control-Allow-Origin` header untuk memungkinkan akses CORS ke API; header permintaan input `x-amzn-RequestId` dipetakan ke `request-id` dalam respons; variabel `petId` jalur permintaan yang masuk dipetakan ke `request-path` header dalam respons; dan parameter `q` kueri dari permintaan asli dipetakan ke header respons. `request-query`

1. Di bawah **Template Response**, simpan `application/json` untuk **Jenis Konten** dan masukkan template pemetaan tubuh berikut di editor **badan Template**:

   ```
   {
        "message":"$context.error.messageString",
        "type": "$context.error.responseType",
        "statusCode": "'404'",
        "stage": "$context.stage",
        "resourcePath": "$context.resourcePath",
        "stageVariables.a": "$stageVariables.a"
   }
   ```

   Contoh ini menunjukkan cara memetakan `$context` dan `$stageVariables` properti ke properti badan respons gateway.

1. Pilih **Simpan perubahan**.

1. Menerapkan API ke tahap baru atau yang sudah ada.

Uji respons gateway Anda dengan memanggil perintah CURL berikut, dengan asumsi URL pemanggilan metode API yang sesuai adalah: `https://o81lxisefl.execute-api.us-east-1.amazonaws.com/custErr/pets/{petId}`

```
curl -v -H 'x-amzn-RequestId:123344566' https://o81lxisefl.execute-api.us-east-1.amazonaws.com/custErr/pets/5/type?q=1
```

Karena parameter string kueri tambahan `q=1` tidak kompatibel dengan API, kesalahan dikembalikan dari respons gateway yang ditentukan. Anda harus mendapatkan respons gateway yang mirip dengan yang berikut ini:

```
> GET /custErr/pets/5?q=1 HTTP/1.1
Host: o81lxisefl.execute-api.us-east-1.amazonaws.com
User-Agent: curl/7.51.0
Accept: */*
 
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 334
Connection: keep-alive
Date: Tue, 02 May 2017 03:15:47 GMT
x-amzn-RequestId: 123344566
Access-Control-Allow-Origin: a.b.c
x-amzn-ErrorType: MissingAuthenticationTokenException
header-1: static
x-request-query: 1
x-request-path: 5
X-Cache: Error from cloudfront
Via: 1.1 441811a054e8d055b893175754efd0c3.cloudfront.net (CloudFront)
X-Amz-Cf-Id: nNDR-fX4csbRoAgtQJ16u0rTDz9FZWT-Mk93KgoxnfzDlTUh3flmzA==
 
{
     "message":"Missing Authentication Token",
     "type": MISSING_AUTHENTICATION_TOKEN,
     "statusCode": '404',
     "stage": custErr,
     "resourcePath": /pets/{petId},
     "stageVariables.a": a
}
```

Contoh sebelumnya mengasumsikan bahwa backend API adalah [Pet Store](http://petstore-demo-endpoint.execute-api.com/petstore/pets) dan API memiliki variabel stage,, didefinisikan. `a`