JSON Schema Validation Uygulanması - Rest Tipinde Bir Api Proxy
Bu senaryoda Apinizer üzerinde oluşturulan Mock API'ye JSON Schema Validation politikasının uygulanması test edilecektir.
Senaryoda gelen isteklerin JSON body’sinin aynı olduğunu varsayarak, bunu All kısmına ekleyelim.
Politika olarak JSON Schema Validation ekliyoruz.
Mock Api'de örnek request body aşağıdaki gibi olacak:
{
"id": 1,
"name": "John Doe",
"email": "johndoe@example.com",
"age": 30,
"isActive": true,
"addresses": [
{
"street": "123 Elm St",
"city": "Springfield",
"postalCode": "12345"
},
{
"street": "456 Oak St",
"city": "Shelbyville",
"postalCode": "67890"
}
]
}
Buna uygun bir JSON Schema Validation aşağıdakileri içermekte:
- id: Zorunlu, pozitif bir tamsayı.
- name: Zorunlu, boş olamaz.
- email: Zorunlu, geçerli bir e-posta formatında olmalı.
- age: Opsiyonel, sıfır veya daha büyük bir tamsayı.
- isActive: Opsiyonel, boolean bir değer.
- addresses: Opsiyonel, adresleri içeren bir dizi. Her adres, street, city, ve postalCode alanlarını içermelidir.
Politikaya eklenecek JSON Schema Validation:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1
},
"name": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"format": "email"
},
"age": {
"type": "integer",
"minimum": 0
},
"isActive": {
"type": "boolean"
},
"addresses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"street": { "type": "string" },
"city": { "type": "string" },
"postalCode": { "type": "string", "pattern": "^[0-9]{5}$" }
},
"required": ["street", "city", "postalCode"]
}
}
},
"required": ["id", "name", "email"]
}
Yukarıdaki Json Schema Validation içeriği aşağıdaki görselde "Schema" alanına eklenir ve kaydedilir.
Test konsolundan örnek istek attığımızda, email yanlış gönderildi ve validasyon işlemi yapıldı. Eposta geçerli değil şeklinde bir uyarı aldık.