

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

# Mengubah permintaan dan tanggapan API untuk HTTP APIs di API Gateway
<a name="http-api-parameter-mapping"></a>

Anda dapat memodifikasi permintaan API dari klien sebelum mereka mencapai integrasi backend Anda. Anda juga dapat mengubah respons dari integrasi sebelum API Gateway mengembalikan respons ke klien. Anda menggunakan *pemetaan parameter* untuk memodifikasi permintaan API dan tanggapan untuk HTTP APIs. Untuk menggunakan pemetaan parameter, Anda menentukan permintaan API atau parameter respons untuk dimodifikasi, dan menentukan cara memodifikasi parameter tersebut.



## Mengubah permintaan API
<a name="http-api-mapping-request-parameters"></a>

Anda menggunakan parameter permintaan untuk mengubah permintaan sebelum mencapai integrasi backend Anda. Anda dapat memodifikasi header, string kueri, atau jalur permintaan.

Parameter permintaan adalah peta nilai kunci. Kunci mengidentifikasi lokasi parameter permintaan untuk diubah, dan bagaimana mengubahnya. Nilai menentukan data baru untuk parameter.

Tabel berikut menunjukkan kunci yang didukung.


| Tipe | Sintaks | 
| --- | --- | 
| Header | append\$1overwrite\$1remove:header.headername | 
| String kueri | append\$1overwrite\$1remove:querystring.querystring-name | 
| Jalur | overwrite:path | 

Tabel berikut menunjukkan nilai yang didukung yang dapat Anda petakan ke parameter.


| Tipe | Sintaks | Catatan | 
| --- | --- | --- | 
| Nilai header | \$1 request.header. nameatau \$1 \$1request.header. name\$1 | Nama header tidak peka huruf besar/kecil. API Gateway menggabungkan beberapa nilai header dengan koma, misalnya"header1": "value1,value2". Beberapa header dicadangkan. Untuk mempelajari selengkapnya, lihat [Header yang dicadangkan](#http-api-mapping-reserved-headers). | 
| Nilai string kueri | \$1request.querystring. nameatau \$1 \$1request.querystring. name\$1 | Nama string kueri peka huruf besar/kecil. API Gateway menggabungkan beberapa nilai dengan koma, misalnya"querystring1" "Value1,Value2". | 
| Isi permintaan | \$1 request.body. nameatau \$1 \$1request.body. name\$1 | Ekspresi jalur JSON. Penurunan rekursif (\$1request.body..name)dan ekspresi filter (?(expression)) tidak didukung.  Saat Anda menentukan jalur JSON, API Gateway memotong isi permintaan pada 100 KB dan kemudian menerapkan ekspresi seleksi. Untuk mengirim muatan yang lebih besar dari 100 KB, tentukan`$request.body`.   | 
| Jalur permintaan | \$1request.path atau \$1 \$1request.path\$1 | Jalur permintaan, tanpa nama panggung. | 
| Parameter jalur | \$1request.path. nameatau \$1 \$1request.path. name\$1 | Nilai parameter jalur dalam permintaan. Misalnya jika rutenya/pets/\$1petId\$1, Anda dapat memetakan petId parameter dari permintaan dengan\$1request.path.petId. | 
| Variabel konteks | \$1 konteks. variableNameatau \$1 \$1context. variableName\$1 | Nilai [variabel konteks](http-api-logging-variables.md). Hanya karakter khusus `.` dan `_` didukung. | 
| Variabel tahap | \$1 StageVariables. variableNameatau \$1 \$1stageVariables. variableName\$1 | Nilai [variabel tahap](http-api-stages.stage-variables.md). | 
| Nilai statis | string | Nilai konstan. | 

**catatan**  
Untuk menggunakan beberapa variabel dalam ekspresi seleksi, lampirkan variabel dalam tanda kurung. Misalnya, `${request.path.name} ${request.path.id}`.

## Mengubah respons API
<a name="http-api-mapping-response-parameters"></a>

Anda menggunakan parameter respons untuk mengubah respons HTTP dari integrasi backend sebelum mengembalikan respons ke klien. Anda dapat mengubah header atau kode status respons sebelum API Gateway mengembalikan respons ke klien.

Anda mengonfigurasi parameter respons untuk setiap kode status yang dikembalikan oleh integrasi Anda. Parameter respons adalah peta nilai kunci. Kunci mengidentifikasi lokasi parameter permintaan untuk diubah, dan bagaimana mengubahnya. Nilai menentukan data baru untuk parameter.

Tabel berikut menunjukkan kunci yang didukung.


| Tipe | Sintaks | 
| --- | --- | 
| Header | append\$1overwrite\$1remove:header.headername | 
| Kode status | overwrite:statuscode | 

Tabel berikut menunjukkan nilai yang didukung yang dapat Anda petakan ke parameter.


| Tipe | Sintaks | Catatan | 
| --- | --- | --- | 
| Nilai header | \$1 response.header. nameatau \$1 \$1response.header. name\$1 | Nama header tidak peka huruf besar/kecil. API Gateway menggabungkan beberapa nilai header dengan koma, misalnya"header1": "value1,value2". Beberapa header dicadangkan. Untuk mempelajari selengkapnya, lihat [Header yang dicadangkan](#http-api-mapping-reserved-headers). | 
| Isi respons | \$1response.body. nameatau \$1 \$1response.body. name\$1 | Ekspresi jalur JSON. Descent rekursif (\$1response.body..name) dan ekspresi filter (?(expression)) tidak didukung.  Saat Anda menentukan jalur JSON, API Gateway memotong badan respons pada 100 KB dan kemudian menerapkan ekspresi pemilihan. Untuk mengirim muatan yang lebih besar dari 100 KB, tentukan`$response.body`.   | 
| Variabel konteks | \$1 konteks. variableNameatau \$1 \$1context. variableName\$1 | Nilai [variabel konteks](http-api-logging-variables.md) yang didukung. | 
| Variabel tahap | \$1 StageVariables. variableNameatau \$1 \$1stageVariables. variableName\$1 | Nilai [variabel tahap](http-api-stages.stage-variables.md). | 
| Nilai statis | string | Nilai konstan. | 

**catatan**  
Untuk menggunakan beberapa variabel dalam ekspresi seleksi, lampirkan variabel dalam tanda kurung. Misalnya, `${request.path.name} ${request.path.id}`.

## Header yang dicadangkan
<a name="http-api-mapping-reserved-headers"></a>

Header berikut dicadangkan. Anda tidak dapat mengonfigurasi pemetaan permintaan atau respons untuk header ini.
+ akses-kontrol-\$1
+ apigw-\$1
+ Otorisasi
+ Koneksi
+ Pengkodean Konten
+ Content-Length
+ Content-Location
+ Diteruskan
+ Tetap Hidup
+ Asal
+ Proksi-Otentikasi
+ Otorisasi Proksi
+ TE
+ Trailer 
+ Transfer-Encoding
+ Peningkatan
+ x-amz-\$1
+ x-amzn-\$1
+ X-Diteruskan-Untuk
+ X-Forwarded-Host
+ X-Diteruskan-Proto
+ Melalui

## Contoh
<a name="http-api-parameter-mapping-examples"></a>

 AWS CLI Contoh berikut mengkonfigurasi pemetaan parameter. Misalnya CloudFormation template, lihat [GitHub](https://github.com/awsdocs/amazon-api-gateway-developer-guide/tree/main/cloudformation-templates).

### Menambahkan header ke permintaan API
<a name="http-api-parameter-mapping-examples-request-header"></a>

Perintah [create-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) berikut membuat header yang diberi nama `header1` ke permintaan API sebelum mencapai integrasi backend Anda. API Gateway mengisi header dengan ID permintaan.

```
aws apigatewayv2 create-integration \
    --api-id abcdef123 \
    --integration-type HTTP_PROXY \
    --payload-format-version 1.0 \
    --integration-uri 'https://api.example.com' \
    --integration-method ANY \
    --request-parameters '{ "append:header.header1": "$context.requestId" }'
```

### Ganti nama header permintaan
<a name="http-api-parameter-mapping-examples-response"></a>

Perintah [create-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) berikut mengganti nama header permintaan dari ke: `header1` `header2`

```
aws apigatewayv2 create-integration \
    --api-id abcdef123 \
    --integration-type HTTP_PROXY \
    --payload-format-version 1.0 \
    --integration-uri 'https://api.example.com' \
    --integration-method ANY \
    --request-parameters '{ "append:header.header2": "$request.header.header1",  "remove:header.header1": "''"}'
```

### Mengubah respon dari integrasi
<a name="http-api-parameter-mapping-examples-response"></a>

Perintah [create-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) berikut mengkonfigurasi parameter respons untuk integrasi. Saat integrasi mengembalikan kode status 500, API Gateway mengubah kode status menjadi 403, dan menambahkan `header1` 1 ke respons. Saat integrasi mengembalikan kode status 404, API Gateway menambahkan `error` header ke respons.

```
aws apigatewayv2 create-integration \
    --api-id abcdef123 \
    --integration-type HTTP_PROXY \
    --payload-format-version 1.0 \
    --integration-uri 'https://api.example.com' \
    --integration-method ANY \
    --response-parameters '{"500" : {"append:header.header1": "$context.requestId", "overwrite:statuscode" : "403"}, "404" : {"append:header.error" : "$stageVariables.environmentId"}  }'
```

### Hapus pemetaan parameter yang dikonfigurasi
<a name="http-api-parameter-mapping-examples-remove"></a>

Perintah [update-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) berikut menghapus parameter permintaan yang dikonfigurasi sebelumnya untuk. `append:header.header1` Ini juga menghapus parameter respons yang dikonfigurasi sebelumnya untuk kode status 200.

```
aws apigatewayv2 update-integration \
    --api-id abcdef123 \
    --integration-id hijk456 \
    --request-parameters '{"append:header.header1" : ""}' \
    --response-parameters '{"200" : {}}'
```