> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 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.

<img src="https://mintcdn.com/apinizer/XyZtFetp41QU4Zg1/images/tutorials/json1.png?fit=max&auto=format&n=XyZtFetp41QU4Zg1&q=85&s=d8681ea4c785d977d1e944565577e3ba" alt="Generate JWK Ekranı" width="1000" data-path="images/tutorials/json1.png" />

Politika olarak JSON Schema Validation ekliyoruz.

<img src="https://mintcdn.com/apinizer/XyZtFetp41QU4Zg1/images/tutorials/json2.png?fit=max&auto=format&n=XyZtFetp41QU4Zg1&q=85&s=35373e5876c01d65698eba2dc5d0c7d5" alt="Generate JWK Ekranı" width="1000" data-path="images/tutorials/json2.png" />

**Mock Api'de örnek request body aşağıdaki gibi olacak:**

```json theme={null}
{
  "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:**

```json theme={null}
{
  "$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.

<img src="https://mintcdn.com/apinizer/XyZtFetp41QU4Zg1/images/tutorials/json3.png?fit=max&auto=format&n=XyZtFetp41QU4Zg1&q=85&s=93fd54773175c737c17f517965455127" alt="Generate JWK Ekranı" width="1000" data-path="images/tutorials/json3.png" />

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.

<img src="https://mintcdn.com/apinizer/XyZtFetp41QU4Zg1/images/tutorials/json4.png?fit=max&auto=format&n=XyZtFetp41QU4Zg1&q=85&s=a197658642ffa06e1c515c70f00fa0e2" alt="Generate JWK Ekranı" width="1000" data-path="images/tutorials/json4.png" />
