Существенным отличием является то, что зефир проверяет .
Вы не просто берете какие-либо данные из Интернета и помещаете их в свою базу данных.Проверка предотвращает ввод неправильных данных (злонамеренных или ошибочных).Даже если данные поступают от доверенного пользователя, рекомендуется проверить их, чтобы обеспечить целостность базы данных.
Marshmallow, как flask-restplus, предоставляет средства проверки, которые проверяют не только типы, но и значения (мин / макс)для чисел, мин / макс длина для строк, мин / макс для дат и т. д., вы даже можете создавать свои собственные валидаторы).
Кроме того, API не всегда является CRUD.Между API и БД может быть некоторый бизнес-код, для которого было бы неплохо иметь объекты Python.Парсер Mongo BSON этого не сделает.
MongoEngine обеспечивает проверку, но это происходит непосредственно перед БД, в то время как проверка должна происходить при входе в API.
Кстати, внутренняя [de |] Сериализация в flask-restful уже давно намечена для устаревания, и все кажется застопорившимся ( GH issue # 9 ).Я думаю, что есть люди, использующие колбу-restplus + зефир, так что это может быть путь.
Вот альтернатива:
- Использовать Marshmallow для сериализации ввода / вывода [10] *
- Использовать marshmallow-mongoengine , чтобы создать свой зефирСхемы API как можно более автоматически из ваших схем MongoEngine
- Используйте webargs для анализа аргументов (вставьте аргументы запроса колбы в схемы зефира)
- Используйте apispec для документирования спецификации, соответствующей стандарту OpenAPI
- Чтобы упростить задачу, используйте flask-rest-api или flask-apispec , чтобы скрыть слои webargs / apispec и предоставитьхороший интерфейс.
Эта комбинация библиотек не такая зрелая и представлена как монолитная колба-рестплюс, но использование зефира приятно, потому что это отличная библиотека и благодаря предоставленной DRY ness.от marshmallow-mongoengine.
µMongo - это альтернатива MongoEngine, основанная на зефире, поэтому она похожа на MongoEngine с включенным зефиром-mongoengine.
В документации имеется схема, иллюстрирующая различные этапы проверки: API между клиентом и бизнес-объектами и ODM между объектами и БД.
(Отказ от ответственности:зефир, webargs, apispec и фляга-rest-api сопровождающий, µmongo, mongoengine и flask-mongoengine участник.)