首页 > 解决方案 > Marshmallow 和 Flask-RESTPlus,它们应该如何一起使用?

问题描述

我正在使用Flask-Restplus在 Flask 服务器中编组响应。当我在他们的网站上偶然发现这个巨大的警告时,我也开始使用这个包来解析来自客户端的 HTTP 请求:

警告

Flask-RESTPlus 的整个请求解析器部分将被删除,并将被有关如何与其他可以更好地执行输入/输出内容的包(例如棉花糖)集成的文档所取代。

然后我切换到Marshmallow来验证/解析 HTTP 客户端请求。因此,我的服务器中的工作流程是:

Client request (HTTP GET/POST) ...
--> process request with Marshmallow and validate/format data
--> do stuff with DB (read, update, create)
--> Format output response with Flask RESTPLUS 
... Client response

到目前为止,这运作良好。但是,这是同时使用 Flask RESTPLUS 和 Marshmallow 的正确方法吗?在 marshmallow 网站上,对于这个包的具体使用没有明确的方向。文档只是说:

Marshmallow 是一个与 ORM/ODM/框架无关的库,用于将复杂的数据类型(例如对象)与原生 Python 数据类型相互转换。

我在网上看到过一些例子,人们使用 Marshmallow 来格式化输出响应,并使用 Flask 来验证预期数据(使用@api.expect)。哪种方法更好?

另外,我想知道使用 Flask RESTPLUS 是否有意义?这个库的唯一兴趣似乎是自动生成 Swagger UI 文档。除此之外,Marshmallow 可以做 Flask RESTPLUS 所做的一切。所以也许我错过了一些东西,有人可以帮忙或评论吗?

谢谢

标签: marshmallowflask-restplus

解决方案


进一步注意网站上显示的警告:

不用担心,如果您现在有代码使用它并希望继续这样做,它不会很快消失。

开发人员将发布文档如何在未来集成最好的 Marshmellow。

到目前为止,这运作良好。但是,这是同时使用 Flask RESTPLUS 和 Marshmallow 的正确方法吗?在 marshmallow 网站上,对于这个包的具体使用没有明确的方向

Flask 是一个微框架:这对您来说意味着您的应用程序的大部分实现取决于程序员,因为它缺少在成熟的 Web 应用程序框架(例如 Django、Pyramid)中常见的大部分功能等)并且其中没有“一种方式,只有一种方式”来做事。数据验证等实现细节由您通过插件、库甚至自己实现(不推荐)提供。

我想知道使用 Flask RESTPLUS 是否有意义?

从我在 Flask-RESTPlus 的快速入门页面中看到的内容来看,它提供了有用的模型,有助于为资源、端点、arg 解析和数据格式化公开 REST 动词。但同样,这个问题主要取决于您和您的应用程序要求。


推荐阅读