帖子里面添加 github 仓库的链接会被标记为广告
顶一个!
这个问题的原因应该是在output
函数里面序列化产生的,如果不使用output
函数,是可以正常序列化为null
,但如果return None
如果可以序列化成null
会更好。
麻烦提供一个可以复现问题的最小示例。
demo 地址
期望接口返回
{
"code": 1000,
"data": null,
"message": "Get pet successfully."
}
或者
{
"code": 1000,
"message": "Get pet successfully."
}
目前返回
{
"code": 1000,
"data": {},
"message": "Get pet successfully."
}
清楚了,多谢。我来看看怎么处理比较好。
这个行为是 marshmallow 序列化的默认行为,我认为返回空字典是合理的行为,因为你使用 output 装饰器声明了使用某个模式去序列化返回值。如果想要返回 null 的话,可以这样实现:
from marshmallow import post_dump
class PetOutSchema(Schema):
@post_dump
def return_none(self, data, **kwargs):
if data == {}:
return None
相关 issue:
这样解决了序列化结果里面的 data 问题,但是 api 文档里面 data 的问题没解决
customize base response schema ,这个功能挺实用的,因为能减少 Schema 要嵌套写的麻烦,但是 data 这个问题确实比较遗憾,如果能想办法再处理一下会更好
帖子和回复内容里面有 github 链接,会被社区标记隐藏
文档里估计目前只能手动处理,使用 app.spec_processor 装饰器注册一个函数来更新。
(帖子恢复了)