Zajmuję się tworzeniem małej aplikacji sieciowej RESTful w Pythonie i używanie JSON jako interfejsu. Aplikacja akceptuje dane JSON i musi zweryfikować je względem schematu. Schemat może być bardzo ścisły lub elastyczny w zależności od żądania. Ponadto aplikacja może wymagać sprawdzenia poprawności obiektów użytkownika w późniejszym ulepszeniu.Python - Cerberus, jsonschema, voluptous - Który z nich będzie odpowiedni?
Znalazłem kilka sugestii w przepełnieniu stosu, a także na innych stronach internetowych. Należą do nich
- Cerberus
- jsonschema
- zmysłowe (pypi.python.org/pypi/voluptuous)
Ale nie mógł znaleźć właściwego porównania.
Jeśli chodzi o prostotę, elastyczność i możliwości rozszerzenia, który z nich należy wybrać?
Cerberus wydaje się być bardzo elastyczny, a jego przydatność wydaje się bardzo dobra w porównaniu z dokumentacją i przykładami. Ale nie wiem o innych bibliotekach.
EDIT 1: Na razie potrzeb w aplikacji są bardzo proste i podstawowe sprawdzanie poprawności schematu z zakresu dodawania własnych typów i niestandardowe reguły walidacji wystarczy. Jeśli więc wszystkie te biblioteki oferują podstawowe wymagania, wybrałbym ten, który jest najprostszy w użyciu. Jestem także otwarty na inne sugestie, jeśli takie istnieją.
Mając nadzieję, że znajdę pomoc.
Myślę, że potrzeba więcej informacji. Istnieje zbyt wiele pakietów do sprawdzania poprawności danych, które można liczyć i myślę, że wybór zależy od ich zaawansowanych funkcji, a nie od ich podstawowych funkcji sprawdzania poprawności schematu (https://github.com/keleshev/schema, http://docs.pylonsproject.org/projects /colander/en/latest/index.html są również prawidłowymi wyborami). Używam jsonschema i to bardzo proste. Czego dokładnie szukasz, nie pozwoli ci tylko wypróbować jednego z nich z wystarczająco dobrą abstrakcją, że będzie on łatwy do zastąpienia w razie potrzeby? – nir0s
@ nir0s Na razie wystarczy podstawowa walidacja schematu z zakresem dodawania typów niestandardowych i reguł sprawdzania poprawności (na przykład sprawdzanie poprawności adresów URL, adresów IPv4 lub adresów IPv6 itd. Ponadto, reguła sprawdzania poprawności może zależeć od wartości innego klucza w tym samym input, na przykład {'user': 'some user', 'sex': 'male', 'age': age} w tym schemacie, poprawny wiek może się zmienić w zależności od płci). Struktury danych również mogą być zagnieżdżane. Więc jeśli wszystkie biblioteki oferują te, mogę wybrać najprostszy. –