JSON Schema: od podstaw do produkcji
Słów kluczowych jest wiele, ale codziennie używa się tylko kilkunastu. Opanuj type/properties/required/$ref, dobrze obsłuż komunikaty błędów i pokryjesz osiemdziesiąt procent realnych przypadków.
Opisz kształt danych za pomocą JSON Schema, zamień ustalenia słowne w wykonywalną walidację i pozwól, by napędzała ona typy TypeScript oraz generowanie formularzy.
Liczba artykułów: 7Słów kluczowych jest wiele, ale codziennie używa się tylko kilkunastu. Opanuj type/properties/required/$ref, dobrze obsłuż komunikaty błędów i pokryjesz osiemdziesiąt procent realnych przypadków.
Typy i schematy pokrywają po jednym segmencie: jeden w czasie kompilacji, drugi w czasie wykonania. Pytanie nie brzmi, który wybrać, ale jak automatycznie utrzymać je w synchronizacji.
Wygenerowane schematy często blokują poprawne dane. Dowiedz się, dlaczego bogatsze próbki dają gorsze schematy, a potem przejdź przez proces: próbkowanie wielu rekordów, uzupełnienie semantyki, precyzyjne wskazywanie błędów.
$ref rozwiązuje ponowne użycie, allOf i oneOf rozwiązują kompozycję, a ich łączenie to miejsce, w którym wszystko się psuje. Omawia $id, $defs, warunki, rekurencję, bundling i debugowanie.
Walidator emituje błędy maszynowe; użytkownicy chcą wiedzieć, które pole wejściowe jest złe. Omawia tablicę errors Ajv, instancePath vs schemaPath, grupowanie i treść komunikatów.
Zdana walidacja nie oznacza czystych danych. Pydantic domyślnie ignoruje nieznane pola, Zod je usuwa, Ajv przepuszcza — zmyślone parametry i literówki przechodzą po cichu. Artykuł pokazuje trzy formy cichej akceptacji i daje pełne przepisy: zamykać obiekty, kontrolować koercję, zaciskać każdy poziom zagnieżdżenia.
Schemat nie kończy się napisaniem — tam zaczyna się degradacja. Jedna literówka po cichu rozluźnia walidację, jeden refaktoryzing łamie wszystkie fixture. Ten przewodnik rozbiera użyteczny układ testowania kontraktowego: fixture pozytywne, negatywne i snapshoty, lint samego schematu, jednokrotną kompilację z ponownym użyciem oraz cztery bramy CI, które zamieniają zerwanie kontraktu w czerwony build.