Trình xác thực JSON Schema
Dán một lược đồ và một tài liệu, chọn bản nháp; trình xác thực sẽ đối chiếu tài liệu với mọi từ khóa mà lược đồ của bạn sử dụng, type, required, enum, oneOf, $ref, if/then/else và format tùy chỉnh, đồng thời báo cáo từng vi phạm kèm theo một con trỏ kiểu JSONPath trỏ đến đúng vị trí gây lỗi.
Cách xác thực theo một lược đồ
-
1
Dán lược đồ
JSON Schema bản nháp 04, 07 hoặc 2020-12. Từ khóa `$schema` (nếu có) sẽ tự động chọn bản nháp tương ứng.
-
2
Dán tài liệu
JSON mà bạn muốn xác thực. Trước tiên, nó phải là JSON hợp lệ; các lỗi cú pháp sẽ được hiển thị trước khi đánh giá lược đồ.
-
3
Xác thực
Mỗi vi phạm đều được báo cáo kèm theo một con trỏ JSON (`/user/email`) và từ khóa bị lỗi (`format`, `required`, v.v.).
-
4
Sửa và xác thực lại
Chỉnh sửa bất kỳ bên nào và trạng thái sẽ cập nhật ngay lập tức.
Các từ khóa được hỗ trợ
Cốt lõi: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.
Tổ hợp: allOf, anyOf, oneOf, not.
Bộ áp dụng: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.
Điều kiện: if, then, else, dependentSchemas.
Tham chiếu: $ref, $defs, $id, $anchor.
Định dạng (có xác thực khi được bật): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.
Kết quả lỗi
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"
Mỗi lỗi đều bao gồm đường dẫn và từ khóa bị lỗi, giúp bạn dễ dàng tìm thấy trong trình soạn thảo.
Những khác biệt giữa các bản nháp dễ gây rắc rối
| Từ khóa | Bản nháp 04 | Bản nháp 07 | Bản nháp 2020-12 |
|---|---|---|---|
id so với $id |
id |
$id |
$id |
exclusiveMaximum dưới dạng bool |
Có | Số | Số |
Cú pháp mảng items |
items |
items |
prefixItems |
$ref cho phép các từ khóa cùng cấp |
Không | Không | Có |
Hãy thiết lập đúng bản nháp; việc xác thực một lược đồ bản nháp 04 dưới dạng 2020-12 sẽ diễn giải sai id và một số điểm tinh tế khác.
Các quy trình làm việc điển hình
- Kiểm thử hợp đồng API: Trước khi triển khai, hãy chạy lược đồ OpenAPI đã tạo hoặc cập nhật với các phản hồi mẫu thực tế.
- Tăng cường cấu hình: Kiểm tra từng tệp cấu hình YAML/JSON trong CI với một lược đồ trước khi hợp nhất.
- Nạp dữ liệu: Từ chối sớm các payload không khớp với hình thức mong đợi, kèm theo thông báo lỗi rõ ràng.
Các lỗi phổ biến
- Quên thực thi
format. Theo mặc định, hầu hết các trình xác thực đều coi các định dạng không xác định chỉ là chú thích. Hãy bật xác thực định dạng nghiêm ngặt để thực sự từ chối các email và ngày tháng không hợp lệ. - Lạm dụng
oneOf. Nếu hai nhánh củaoneOfchồng lấn nhau, tài liệu sẽ thất bại (nó phải khớp chính xác với đúng một nhánh). Hãy dùnganyOfhoặc các mẫu phân biệt. - Lược đồ chặt chẽ với
additionalProperties: false. Việc thêm một trường tùy chọn mới sẽ trở thành một thay đổi phá vỡ tương thích. Hãy bỏ qua nó trừ khi bạn thực sự muốn một đối tượng khép kín.
Câu hỏi thường gặp
Có. Các bản nháp 2020-12, 07 và 04 đều được hỗ trợ. Trình xác thực sẽ đọc từ khóa $schema trong tài liệu của bạn để chọn đúng bản, hoặc quay về bộ chọn trong giao diện người dùng.
Các định dạng tiêu chuẩn (email, date-time, uuid, ipv4, v.v.) sẽ được xác thực khi bật chế độ định dạng nghiêm ngặt. Các định dạng tùy chỉnh được khai báo trong lược đồ của bạn chỉ được coi là chú thích, trừ khi bạn cung cấp một regex với pattern.
Các tham chiếu nội bộ (#/$defs/foo) được phân giải tự động. Vì lý do bảo mật, các tham chiếu HTTP bên ngoài không được tải theo mặc định. Trước tiên hãy nội tuyến các tham chiếu bên ngoài, hoặc dùng một công cụ chuyên dụng hỗ trợ phân giải $ref từ xa.
Có. Cả lược đồ lẫn tài liệu đều được giữ tại chỗ. Nội dung đã dán không bao giờ được tải lên, an toàn cho các hợp đồng API nội bộ và dữ liệu nhạy cảm.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Trình định dạng HTML
Định dạng HTML cục bộ trong trình duyệt với thụt lề hai hoặc bốn khoảng trắng. HTML không được tải lên hoặc xác thực.
Bảng tra cứu nhanh Markdown
Tài liệu Markdown thực dụng với bản xem trước thực tế và ví dụ có thể sao chép cho tiêu đề, danh sách, bảng, mã, liên kết, hình ảnh và cú pháp GFM.
Bảng Tra Regex
Tài liệu tham chiếu biểu thức chính quy có thể tìm kiếm cho JavaScript, PCRE2/PHP, Python re và .NET. So sánh mã thông báo, cú pháp riêng của máy, neo, nhóm, lookaround và cờ.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- Validador de JSON Schema [ES]
- Validateur de schéma JSON [FR]
- JSONスキーマバリデーター [JA]
- Validador de JSON Schema [PT]
- JSON Schema-validator [SV]
- เครื่องมือตรวจสอบ JSON Schema [TH]
- أداة التحقق من مخطط JSON [AR]
- JSON-Schema-Validator [DE]
- JSON 스키마 검증기 [KO]
- Penentu Struktur JSON [ID]
- JSON Schema-validator [NL]
- Walidator JSON Schema [PL]
- Валидатор JSON Schema [RU]
- JSON Şeması Doğrulayıcı [TR]
- JSON 模式验证器 [ZH]
- JSON Schema Validator [EN]
- Validator di JSON Schema [IT]