8

我正在開發一個小型的REST風格的Web應用程序在Python中,並使用JSON作爲接口。該應用程序接受JSON數據,並需要根據模式驗證它們。該架構可能非常嚴格或靈活取決於請求。此外,應用程序可能需要在稍後改進時驗證用戶對象。Python - Cerberus,jsonschema,voluptous - 哪一個適合?

我在堆棧溢出以及其他網站上發現了一些建議。這些措施包括

,但無法找到一個合適的比較。

就簡單性,靈活性和可擴展性而言,您認爲應該選擇哪一種?

Cerberus似乎非常靈活,擴展能力從他們的文檔和示例中看起來非常好。但我不知道其他圖書館。

編輯1:現在,應用程序的需求非常簡單,基本的模式驗證和添加自定義類型和自定義驗證規則的範圍就足夠了。因此,如果所有這些庫提供了基本要求,我會選擇最簡單的。如果有的話,我也接受其他建議。

希望能找到一些幫助。

+0

我想一些更多的信息是必需的。有太多的數據驗證軟件包要計數,我認爲選擇取決於他們的高級功能,而不是他們的基本模式驗證功能(https://github.com/keleshev/schema,http://docs.pylonsproject.org/projects /colander/en/latest/index.html也是有效的選擇)。我使用jsonschema很多,而且非常簡單。你究竟在尋找什麼,這不僅會讓你在足夠好的抽象中嘗試其中的一個,而且在需要時可以很容易地進行替換。 – nir0s

+0

@ nir0s現在,基本的模式驗證可以添加自定義類型和驗證規則(例如,驗證有效的URL,IPv4地址或IPv6地址等)。同樣,驗證規則可能取決於同一個其他密鑰的值輸入,例如{'用戶':'一些用戶','性別':'男性','年齡':年齡}在這個模式中,有效年齡可能會根據性別而改變)。數據結構也可以嵌套。所以如果所有的圖書館都提供這些,我可以選擇最簡單的。 –

回答

4

我會帶塞伯魯斯,如果只是因爲它的精彩文檔。它允許根據一定的條件設置依賴關係(​​),對於基本的模式驗證需求來說,它就像jsonschema,性感等一樣簡單。

也支持嵌套字段(在所有庫中,我i熟悉)和他們的定製文檔是驚人的:http://docs.python-cerberus.org/en/stable/customize.html

這就是說,我不是基於這個答案使用所有三個建議的軟件包,而是廣泛使用jsonschema和閱讀足夠的文檔和其他兩個建議。

+0

是的,對我來說,cerberus文檔非常棒,他們滿足我的所有需求。看起來像現在一起用這個。感謝您花時間回答問題。 –