🌲[apiflask] 解耦 marshmallow 并支持 Pydantic

这个任务比较复杂,我决定自己来做了。希望一个月可以完成,然后发 APIFlask 3.0 版本。

1 个赞

这部分辉哥进度如何了:upside_down_face:,我未来一段时间比较有空可以帮些忙~(如果快完成了就算了

实际上我还没有开始,只做了一些调研……你要是感兴趣的话,可以交给你 :sweat_smile:

之前大致做了一些调研,应该可以继续用 apispec 来做整体 OpenAPI spec 的生成,marshmallow 或 Pydantic 作为解耦的 serializer 负责对应 schema/model class 的 spec 生成。

有一些项目可以参考:

2 个赞

这个任务比较大,能再拆分细一点吗?我也想参与进来

还挺期待这个功能的

两个人做的话,大致可以分成这两部分:

  • 解耦,实现一个通用的 serializer API
  • 添加 Pydantic 支持

啊哈,我选第二个 :face_with_peeking_eye:

1 个赞

好,那就先这样定了

非常喜欢这个issue,flask 和 pydantic 一直没能很好的融合,一些框架只提供校验,没能提供 openapi 的生成,这也是个能将二者做进一步结合的好机会。

顺便一提:

在之前的工作中,我为公司内部整理了一套基于 flask 的开发范式(因为要结合现有的产品代码,没有走社区版本的范式)。
在模板中我们提供了基于 flask-smorest 的集成(同样是基于 marshmallow),我们在公司做推广时同学提出希望使用 pydantic 作为 de/serializer,但后来无论是时间还是资源,再后来我也离职了,这个事儿也就一直没做成,于私来说十分可惜。

如果可以我也希望参与到这个 feature 的开发中,我最近会抽空看下项目代码。

2 个赞

有兴趣的话,可以试试我这个任务,我一直没有抽出时间来完成 :smiling_face_with_tear:

序列化和反序列化的主要代码在这两个方法里面:

这是一些可能有帮助的文档:
https://marshmallow.readthedocs.io/en/stable/
https://flask-marshmallow.readthedocs.io/en/latest/
https://webargs.readthedocs.io/en/latest/

如果有任何问题的话,欢迎交流,我每天晚上基本都会看一眼社区

2 个赞

忙疯了,这两天终于有空看看

1 个赞