

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

# Contoh bagaimana API Gateway mengevaluasi aturan perutean


Bagian berikut menunjukkan empat contoh bagaimana API Gateway mengevaluasi aturan routing dan pemetaan API.

## Contoh 1: Aturan perutean saja


Dalam contoh ini, nama domain khusus `https://petstore.example.com` memiliki mode perutean yang disetel ke `ROUTING_RULE_ONLY` dan memiliki aturan dan prioritas perutean berikut.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Jika permintaan berisi header: `Hello:World`   |   Target API 1   | 
|  `zzz000`  |   50   |   Jika permintaan berisi header: `Accept:image/webp` dan `Pet:Dog-*` dan jika jalur dasar berisi `PetStoreShopper`  |   Target API 2   | 
|  `efg456`  |   100   |  Tidak ada  |   Target API 3   | 

Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://petstore.example.com -h "Hello:World"`  |  Target API 1  |  Permintaan cocok dengan aturan `abc123` routing.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Hello:World", "Pet:Dog-Bella", "Accept:image/webp"`  |  Target API 1  |  API Gateway mengevaluasi semua aturan perutean dalam urutan prioritas. Aturan perutean `abc123` memiliki prioritas pertama dan kondisinya cocok, sehingga API Gateway memanggil Target API 1. Meskipun kondisi permintaan juga cocok dengan aturan perutean`zzz000`, API Gateway tidak mengevaluasi aturan perutean lainnya setelah membuat kecocokan.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella", "Accept:image/webp"`  |  Target API 2  |  Permintaan cocok dengan aturan `zzz000` routing. Ini adalah pertandingan karena itu `Pet:Dog-Bella` adalah string yang cocok `Pet:Dog-*`  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella"`  |  Target API 3  |  Permintaan tidak cocok dengan aturan `abc123` routing. Permintaan tidak cocok dengan aturan perutean `zzz000` karena semua header yang diperlukan tidak ada. Aturan prioritas berikutnya cocok dengan semua permintaan yang masuk, jadi API Gateway memanggil Target API 3.  | 

## Contoh 2: Aturan perutean dan pemetaan API


Dalam contoh ini, nama domain khusus `https://petstore.diagram.example.com` memiliki mode perutean yang disetel ke `ROUTING_RULE_THEN_API_MAPPING` dan memiliki aturan perutean dan pemetaan API berikut.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   1   |   Jika permintaan basis berisi `pets`   |   Memanggil `Prod` tahap `PetStore` API.   | 
|  `000zzz`  |   5   |   Jika permintaan berisi header:`Cookie`: `*ux=beta*` dan dan jika jalur dasar berisi `/refunds`  |   Memanggil `Beta` tahap `Refunds` API.   | 

Tabel berikut menunjukkan pemetaan API untuk. `https://petstore.backup.example.com`


|  Pemetaan API  |  API yang dipilih  | 
| --- | --- | 
|   `/refunds`   |   Memanggil `Prod` tahap `Refunds` API.   | 
|   `(none)`   |   Memanggil `Prod` tahap `Search` API.   | 

Diagram berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya dan pemetaan API ke permintaan contoh. Contoh permintaan dirangkum dalam tabel setelah diagram ini.

![\[Diagram bagaimana API Gateway menerapkan aturan perutean dan pemetaan API sebelumnya.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/rr-diagram.png)


Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya dan pemetaan API ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://petstore.diagram.com/pets`  |  `Prod`Tahap `PetStore` API.  |  Permintaan cocok dengan aturan `abc123` perutean.  | 
|  `https://petstore.diagram.example.com/refunds -h "Cookie:lang=en-us;ux=beta"`  |  `Beta`Tahap `Refunds` API.  |  Permintaan cocok dengan aturan `000zzz` perutean. `Cookie`Header berisi `*contains*` kecocokan yang benar dan pencocokan jalur dasar untuk kondisi ini.   | 
|  `https://petstore.diagram.example.com/refunds`  |  `Prod`Tahap `Refunds` API.   |  Permintaan tidak memiliki header yang diperlukan untuk mencocokkan aturan perutean. `zzz000` Jika API Gateway tidak berhasil mencocokkan aturan perutean, itu akan kembali ke pemetaan API. API Gateway dapat memetakan jalur dasar ke `Prod` tahap `Refunds` API.   | 
|  `https://petstore.diagram.example.com/`  |  `Prod`Tahap `Search` API.   |  Permintaan mencocokkan pemetaan API dengan jalur `(none)` kosong.  | 

## Contoh 3: Aturan perutean dan pemetaan API dengan beberapa level


Dalam contoh ini, nama domain khusus `https://petstore.backup.example.com` memiliki mode perutean yang disetel ke `ROUTING_RULE_THEN_API_MAPPING` dan memiliki aturan perutean dan pemetaan API berikut.

Tabel berikut menunjukkan aturan routing untuk`https://petstore.backup.example.com`.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Jika permintaan berisi header: `Hello:World`   |   Target API 1   | 
|  `000zzz`  |   50   |   Jika permintaan berisi header:`Accept`: `image/webp` dan `Pet:Dog-*` dan jika jalur dasar berisi `PetStoreShopper`  |  Target API 2  | 

Tabel berikut menunjukkan pemetaan API untuk. `https://petstore.backup.example.com`


|  Pemetaan API  |  API yang dipilih  | 
| --- | --- | 
|   `PetStoreShopper`   |   Target API 3   | 
|   `PetStoreShopper/cats`   |   Target API 4   | 

Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya dan pemetaan API ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://petstore.example.com/PetStoreShopper -h "Accept:image/webp", "Pet:Cats" `  |  Target API 3  |  Permintaan tidak memiliki header yang diperlukan untuk mencocokkan aturan perutean. `zzz000` Jika API Gateway tidak berhasil mencocokkan aturan perutean, itu akan kembali ke pemetaan API. API Gateway dapat memetakan jalur dasar ke Target API 3.  | 
|  `https://petstore.example.com/PetStoreShopper/cats -h "Hello:World"`  |  Target API 1  |  Permintaan cocok dengan aturan `abc123` perutean. Jika mode perutean disetel ke`ROUTING_RULE_THEN_API_MAPPING`, aturan perutean selalu diprioritaskan daripada pemetaan API.  | 
|  `https://petstore.example.com/Admin -h "Pet:Dog-Bella"`  |  Tidak ada  |  Permintaan tidak cocok dengan aturan perutean atau pemetaan API apa pun. Karena tidak ada aturan perutean default, API Gateway menolak panggilan dan mengirimkan kode status kepada `403 Forbidden` pemanggil.  | 

## Contoh 4: Aturan perutean untuk nama domain wildcard


Dalam contoh ini, nama domain kustom `https://*.example.com` adalah nama domain wildcard. Wildcard mendukung semua subdomain yang merutekan kembali ke domain yang sama. Contoh aturan perutean berikut mengubah perilaku ini untuk memungkinkan subdomain merutekan ke target yang berbeda APIs dengan menggunakan header. `Host`

Tabel berikut menunjukkan aturan routing untuk`https://*.example.com`.


|  ID aturan  |  Prioritas  |  Ketentuan  |  Tindakan  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Jika permintaan berisi header: `Host:a.example.com`   |   Target API 1   | 
|  `000zzz`  |   50   |   Jika permintaan berisi header: `Host:b.example.com`  |  Target API 2  | 
|  `efg456`  |   500   |  Tidak ada  |  Target API 3  | 

Tabel berikut menunjukkan bagaimana API Gateway menerapkan aturan perutean sebelumnya ke permintaan contoh.


| Permintaan | API yang dipilih | Penjelasan | 
| --- | --- | --- | 
|  `https://a.example.com`  |  Target API 1  |  `Host`Header adalah`a.example.com`. Permintaan ini cocok dengan aturan `abc123` routing.  | 
|  `https://b.example.com`  |  Target API 2  |  `Host`Header adalah`b.example.com`. Permintaan ini cocok dengan aturan `000zzz` routing.  | 
|  `https://testing.example.com`  |  Target API 3  |  Ini cocok dengan aturan perutean catch-all. `efg456`  | 