JSON Body Zenginleştirme
Senaryo
Bir evcil hayvan yönetim API'sine gelen istek body'si aşağıdaki yapıdadır:
{
"id": 1,
"category": { "id": 10, "name": "Köpekler" },
"name": "Karabaş",
"photoUrls": ["foto1.jpg"],
"tags": [{ "id": 5, "name": "aşılı" }],
"status": "available"
}
Hedef; istek header'ları, query parametresi, body alanları ve bağlam bilgilerini birleştirerek zenginleştirilmiş bir JSON mesajı oluşturmak ve bunu sonraki politikalar için özel bir değişkende saklamaktır. Ayrıca durum available ise iç içe geçmiş (nested) bir alan eklenecektir.
Satır Yapılandırması
Bu yapılandırma 6 satırdan oluşur. Satırlar sırasıyla çalışır; önceki satırda oluşturulan değişken sonraki satırlarda kullanılır.
Satır 1: Hayvan Adını Ara Değişkene Al
| Alan | Değer |
|---|---|
| Oluşturma Modu | Template |
| Şablon | #{body.$.name} |
| Hedef | Özel Değişken → petName |
| Varsayılan Değer | unknown |
Satır 2: Kategori Etiketini Ara Değişkene Al
| Alan | Değer |
|---|---|
| Oluşturma Modu | Template |
| Şablon | #{body.$.category.name} |
| Hedef | Özel Değişken → categoryLabel |
| Varsayılan Değer | (boş) |
Satır 3: Durum Etiketini JEXL Ternary ile Üret
| Alan | Değer |
|---|---|
| Oluşturma Modu | Template |
| Şablon | #{body.$.status == 'available' ? 'SATIN_ALINABILIR' : body.$.status == 'pending' ? 'BEKLEMEDE' : 'SATILDI'} |
| Hedef | Özel Değişken → statusLabel |
| Varsayılan Değer | (boş) |
Satır 4: İç İçe Nesneyi Varsayılan Olarak null Yap
| Alan | Değer |
|---|---|
| Oluşturma Modu | Template |
| Şablon | null |
| Hedef | Özel Değişken → nestedObject |
Satır 5: Durum available İse İç İçe Nesneyi Doldur
| Alan | Değer |
|---|---|
| Oluşturma Modu | Template |
| Şablon | {"displayName":"#{petName} - #{categoryLabel}","statusLabel":"#{statusLabel}"} |
| Hedef | Özel Değişken → nestedObject |
Satır 5 Koşulu:
| Değişken | Operatör | Değer |
|---|---|---|
İstek Body → JSON Path $.status | Eşittir | available |