8

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

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.

+0

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

+0

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

Odpowiedz

4

Wezmę Cerberusa, jeśli tylko za jego wspaniałą dokumentację. Pozwala na ustawienie zależności zgodnie z pewnymi warunkami (http://docs.python-cerberus.org/en/stable/validation-rules.html#dependencies) i jest z pewnością tak proste, jak podstawowe potrzeby sprawdzania schematu, o których mówisz jako jsonschema, voluptuous, itp.

Zagnieżdżone pola są również obsługiwane (we wszystkich bibliotekach i "Jestem zaznajomiony z) i ich dokumentacja dostosowania są niesamowite: http://docs.python-cerberus.org/en/stable/customize.html

Biorąc to pod uwagę, nie opieram tej odpowiedzi na użyciu wszystkich trzech proponowanych pakietów, ale raczej na intensywnym korzystaniu z jsonschema i przeczytaniu wystarczającej dokumentacji i zaleceń na dwóch pozostałych. .

+0

Tak, również dla mnie, dokumentacja Cerberusa jest cudowna i obejmuje wszystkie moje potrzeby. Na razie wygląda na to. Dziękuję za poświęcenie czasu na odpowiedź. –