8

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

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.

+0

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

+0

@ 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. –

Trả lời

4

Tôi sẽ lấy Cerberus sau đó nếu chỉ cho tài liệu tuyệt vời của nó. Nó cho phép thiết lập các phụ thuộc theo các điều kiện nhất định (http://docs.python-cerberus.org/en/stable/validation-rules.html#dependencies) và chắc chắn là đơn giản đối với các yêu cầu xác thực lược đồ cơ bản mà bạn đang đề cập đến là jsonschema, khiêu dâm, v.v.

Các trường lồng nhau cũng được hỗ trợ (trong tất cả các thư viện) quen thuộc với) và các tài liệu tùy biến của chúng thật tuyệt vời: http://docs.python-cerberus.org/en/stable/customize.html

Điều đó đang được nói, tôi không dựa vào câu trả lời này bằng cách sử dụng tất cả ba gói được đề xuất mà là sử dụng jsonschema rộng rãi và đọc đủ tài liệu và đề xuất .

+0

Vâng, với tôi, tài liệu cerberus là tuyệt vời và họ có tất cả các nhu cầu của tôi được bảo hiểm. Hình như đi với cái này bây giờ. Cảm ơn bạn đã dành thời gian trả lời câu hỏi. –

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