JSON Şeması Doğrulayıcı

Bir şema ve bir belge yapıştırın, taslağı seçin; doğrulayıcı belgeyi şemanızda kullanılan her anahtar kelimeye göre denetler, type, required, enum, oneOf, $ref, if/then/else, özel format, ve her ihlali, sorunlu konumu tam olarak gösteren JSONPath tarzı bir işaretçiyle raporlar.

Bir şemaya göre nasıl doğrulama yapılır

  1. 1

    Şemayı yapıştırın

    JSON Şeması taslak 04, 07 veya 2020-12. `$schema` anahtar kelimesi (varsa) taslağı otomatik olarak seçer.

  2. 2

    Belgeyi yapıştırın

    Doğrulamak istediğiniz JSON. Önce geçerli bir JSON olmalıdır; sözdizimi hataları şema değerlendirmesinden önce gösterilir.

  3. 3

    Doğrulayın

    Her ihlal, bir JSON işaretçisi (`/user/email`) ve başarısız olan anahtar kelime (`format`, `required` vb.) ile birlikte raporlanır.

  4. 4

    Düzeltin ve yeniden doğrulayın

    İki taraftan birini düzenleyin; durum anında güncellenir.

Desteklenen anahtar kelimeler

Çekirdek: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

Bileşim: allOf, anyOf, oneOf, not.

Uygulayıcılar: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

Koşullar: if, then, else, dependentSchemas.

Referanslar: $ref, $defs, $id, $anchor.

Biçimler (etkinleştirildiğinde doğrulama ile): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Hata çıktısı

FAIL  /user/email        format            "not-an-email" is not a valid "email"
FAIL  /user/age          minimum           -3 is less than the minimum 0
FAIL  /orders/0/total    type              "42" is not of type "number"
FAIL  /                  required          missing required property "shippingAddress"

Her hata, başarısız olan yolu ve anahtar kelimeyi içerir; bu da düzenleyicinizde hızlıca konumlandırmanızı sağlar.

Sizi yanıltan taslak farklılıkları

Anahtar kelime Taslak 04 Taslak 07 Taslak 2020-12
id ile $id id $id $id
exclusiveMaximum bool olarak Evet Sayı Sayı
items dizi sözdizimi items items prefixItems
$ref aynı düzeydeki anahtarlara izin verir Hayır Hayır Evet

Doğru taslağı ayarlayın; draft-04 şemasını 2020-12 olarak doğrulamak id ve diğer bazı ince ayrıntıları yanlış yorumlar.

Tipik iş akışları

  • API sözleşmesi testi: dağıtımdan önce, oluşturulan/güncellenen OpenAPI şemasını gerçek örnek yanıtlara göre çalıştırın.
  • Yapılandırma sıkılaştırma: birleştirmeden önce CI içinde her YAML/JSON yapılandırmasını bir şemaya göre doğrulayın.
  • Veri alımı: beklenen biçime uymayan yükleri en baştan, açık bir hata mesajıyla reddedin.

Yaygın hatalar

  • format zorlamasını unutmak. Varsayılan olarak çoğu doğrulayıcı, bilinmeyen biçimleri yalnızca ek açıklama olarak ele alır. Geçersiz e-postaları ve tarihleri gerçekten reddetmek için katı biçim doğrulamasını etkinleştirin.
  • oneOf’u aşırı kullanmak. oneOf’un iki dalı çakışırsa belge başarısız olur (tam olarak bir tanesiyle eşleşmelidir). anyOf veya ayırt edici desenler kullanın.
  • additionalProperties: false ile katı şemalar. Yeni bir isteğe bağlı alan eklemek, uyumluluğu bozan bir değişikliğe dönüşür. Gerçekten kapalı bir nesne istemiyorsanız bunu belirtmeyin.

Sık Sorulan Sorular

Evet. Taslak 2020-12, 07 ve 04’ün tamamı desteklenir. Doğrulayıcı, doğru olanı seçmek için belgenizden $schema anahtar kelimesini okur ya da arayüzdeki seçiciye geri döner.

Standart biçimler (email, date-time, uuid, ipv4 vb.) katı biçim doğrulaması etkinleştirildiğinde doğrulanır. Şemanızda bildirilen özel biçimler, pattern ile bir regex sağlamadığınız sürece yalnızca ek açıklama olarak ele alınır.

Dahili başvurular (#/$defs/foo) otomatik olarak çözülür. Dış HTTP başvuruları güvenlik nedeniyle varsayılan olarak getirilmez. Önce dış başvurularınızı satır içine ekleyin ya da uzaktan $ref çözümlemeyi destekleyen özel bir araç kullanın.

Evet. Hem şema hem de belge yerelde kalır. Yapıştırılan içerik asla yüklenmez, dahili API sözleşmeleri ve hassas veriler için güvenlidir.

İlgili Araçlar

Araç diğer dillerde mevcuttur