Tôi đang phát triển một ứng dụng web RESTful nhỏ trong python và sử dụng JSON làm giao diện. Ứng dụng này chấp nhận dữ liệu JSON và cần xác nhận hợp lệ chúng dựa trên lược đồ. Giản đồ có thể rất nghiêm ngặt hoặc linh hoạt tùy theo yêu cầu. Ngoài ra, ứng dụng có thể cần phải xác thực các đối tượng người dùng sau này.Python - Cerberus, jsonschema, voluptous - cái nào sẽ phù hợp?
Tôi đã tìm thấy một số đề xuất trong ngăn xếp tràn cũng như tại các trang web khác. Những bao gồm
- Cerberus
- jsonschema
- đầy gợi cảm (pypi.python.org/pypi/voluptuous)
Nhưng không thể tìm thấy một sự so sánh thích hợp.
Xét về tính đơn giản, linh hoạt và khả năng mở rộng, bạn nghĩ tôi nên chọn loại nào?
Cerberus có vẻ rất linh hoạt và khả năng mở rộng có vẻ rất tốt so với tài liệu và ví dụ của chúng. Nhưng tôi không biết về các thư viện khác.
EDIT 1: Hiện tại, nhu cầu của ứng dụng khá đơn giản và xác thực lược đồ cơ bản với phạm vi để thêm loại tùy chỉnh và quy tắc xác thực tùy chỉnh sẽ đủ. Vì vậy, nếu tất cả các thư viện này cung cấp các yêu cầu cơ bản, tôi sẽ sử dụng một thư viện đơn giản nhất để sử dụng. Ngoài ra tôi đang mở để gợi ý khác nếu có.
Hy vọng tìm một số trợ giúp.
Tôi nghĩ rằng cần có thêm thông tin. Có quá nhiều gói xác thực dữ liệu để đếm và tôi nghĩ rằng lựa chọn phụ thuộc vào các tính năng nâng cao của họ, chứ không phải các tính năng xác thực lược đồ cơ bản của chúng (https://github.com/keleshev/schema, http://docs.pylonsproject.org/projects /colander/en/latest/index.html cũng là lựa chọn hợp lệ). Tôi sử dụng jsonschema rất nhiều và nó rất đơn giản. Chính xác những gì bạn đang tìm kiếm mà sẽ không chỉ cho phép bạn thử một trong số họ với một sự trừu tượng đủ tốt mà nó sẽ dễ dàng thay thế khi cần thiết? – nir0s
@ nir0s Hiện tại, việc xác nhận lược đồ cơ bản sẽ đủ với một phạm vi bổ sung các kiểu tùy chỉnh và các quy tắc xác nhận (ví dụ như xác nhận hợp lệ url, địa chỉ IPv4 hoặc địa chỉ IPv6, vv.) đầu vào, ví dụ {'user': 'some user', 'sex': 'male', 'age': age} trong lược đồ này, độ tuổi hợp lệ có thể thay đổi tùy theo giới tính). Và cấu trúc dữ liệu có thể được lồng nhau. Vì vậy, nếu tất cả các thư viện cung cấp các thư viện này, tôi có thể chọn cách đơn giản nhất. –