Schema 가 자라; 재사용이 sane 유지
$defs — 로컬 정의
$defs 는 이름 붙은 sub-schema 의 최상위 dictionary. 모양 한 번 정의; 같은 문서 어디서나 $ref 로 참조. 옛 definitions 키워드 (Draft-07) 를 대체.
$ref — schema 포인터
$ref 는 URI Reference 받아. 같은 문서 ref 는 JSON Pointer fragment: #/$defs/Address. 외부 문서 ref 는 전체 URL: https://example.com/address.schema.json. 대부분 validator 가 외부 ref 를 HTTP fetch + 캐시로 해결, 또는 '먼저 이 schema 들 로컬 로드' API 로.
$id — 서로 참조하는 schema
각 schema 문서에 안정적인 $id URL. 다른 schema 가 그걸 참조. validator 의 일은 $id 일관되게 해결 — 검증 전 필요한 모든 schema 를 validator 에 로드, 교차 참조가 투명하게 작동.
원칙: schema 는 그냥 JSON. 코드처럼 다뤄 — 반복되는 모양을
$defs 로 추출, 잘 이름 붙이고, $ref 로 재사용. address 객체 세 번 복붙된 50 줄 schema 는 리팩토링 냄새.