2016-09-01 30 views
11

Tôi đã tạo một đặc tả API từ một số tệp JSON và tôi đang cố kiểm tra xem các tệp có hợp lệ hóa với thông số API hay không.Xác thực JSON đối với lược đồ API Swagger

Có một số công cụ tốt để xác thực đối với Lược đồ JSON, nhưng tôi không có cơ hội tìm một công cụ để xác thực các thông số được tạo trong Swagger (công cụ tạo lược đồ API). Giải pháp duy nhất tôi tìm thấy là tạo ra một máy khách/máy chủ trong Swagger-Editor, nó khá cồng kềnh.

Đã có một công cụ hiện có để xác thực JSON đối với Lược đồ Swagger chưa?

+1

Bạn có muốn xác thực rằng thông số của bạn là một thông số OpenAPI (fka. Swagger) hợp lệ hay xác thực rằng việc triển khai thông số này sẽ tạo JSON hợp lệ cho các lược đồ JSON của bạn? –

+1

Câu hỏi đặt ra là chỉ kiểm tra xem JSON có hợp lệ với thông số OpenAPI không. –

+0

Bạn đã xem https://medium.com/@betz.mark/validate-json-models-with-swagger-and-bravado-5fad6b21a825 chưa? –

Trả lời

9

Arnaud trong các ý kiến ​​là đúng rằng có hai câu hỏi riêng biệt ở đây.

Bạn có muốn xác nhận rằng spec của bạn là một OpenAPI hợp lệ (fka. Swagger) spec

Bạn

  • có thể sao chép spec của bạn đến online Swagger editor và nó sẽ ném lỗi. Một lặn nhanh chóng qua source không cho tôi biết những gì nó đang sử dụng để tạo ra những lỗi đó, nhưng nó dường như không liên lạc với một máy ...
  • Sử dụng chính thức swagger-parser cho Java.
  • Sử dụng không chính thức swagger-parser cho JavaScript (trình duyệt hoặc Nút).

hoặc xác thực rằng việc triển khai thông số này sẽ tạo JSON hợp lệ về lược đồ JSON của bạn?

Nói cách khác, đây là một số JSON từ một yêu cầu hoặc nội dung phản hồi, có chính xác không?

Biến đổi dựa trên một tiêu chuẩn khác được gọi là Lược đồ JSON cho schema objects, là những gì thực sự mô tả JSON (chứ không phải là điểm cuối hoặc siêu dữ liệu). Swagger sử dụng một tập hợp con của JSON Schema (thiếu: oneOf, patternProperties, trong số những người khác). Để kết thúc, bạn có thể sử dụng trình xác nhận hợp lệ JSON Schema. Có 37 listed here; Tôi sẽ gửi lời chào mừng đến this online validator cũng hỗ trợ các lược đồ YAML.

Nhưng, khi tôi nói Swagger dựa vào một tập con của JSON API, tôi đã nói dối. Có một số trường cố định có ý nghĩa đặc biệt trong Swagger không phải là một phần của JSON Schema. Một trong số đó là discriminator được sử dụng cho đa hình. Tôi không biết về trình xác thực Swagger có thể xử lý discriminator. Có một số fair number of tools để vênh vang và một số yêu cầu xác thực, nhưng nhiều người bị từ bỏ, có nghĩa là cho các phiên bản cũ, không hoàn chỉnh tính năng, được gắn với các công nghệ khác, v.v. Nếu có một thư viện trưởng thành và được duy trì tốt mà tôi đang thiếu, tôi rất muốn biết.

+0

Tôi đang gặp tình huống tương tự và điều này hữu ích. Với một chút công việc, tôi đã có thể viết các tập lệnh của riêng mình có thể xác thực tải trọng phản hồi của máy chủ của tôi với Lược đồ JSON do Swagger định nghĩa. Tôi đã viết một số middlware Express để làm điều đó. Thay vì cố gắng sử dụng Swagger để làm những gì tôi muốn, tôi có thể sử dụng đối tượng lược đồ mà nó dựa vào. Cảm ơn! – Tina

+0

Đối với phần thứ hai, làm cách nào để triển khai nó mà không sử dụng trình xác thực lược đồ bên ngoài? Tôi chỉ muốn xác nhận một thể hiện của một lược đồ dựa vào một lược đồ (vênh vang). Tôi sẽ làm như thế nào? Cảm ơn. – Nikhita

+0

trong nội bộ có vẻ như vênh vang đang sử dụng trình xác thực json giản đồ z, vì vậy về mặt lý thuyết bạn sẽ xem xét điều đó để xem các tính năng nào có sẵn? https://github.com/zaggino/z-schema – chrismarx

Các vấn đề liên quan