apiflask的output里schema传递None的时候,swagger报错


代码如下

@bug.delete("/bugDel")
@input(IDReq)
@output(None)
def bugDel(data):
    return jsonify(bugService.bugDelService(request.json))

像一些删除,启用,禁用的接口,可能返回的数据就是一个空,就只有一个200的业务状态码,这个时候output的报错该怎么处理?

我现在是单独了一个响应为空的类

class Res_Null(Schema):
    """"""

@bug.delete("/bugDel")
@input(IDReq)
@output(Res_Null)
def bugDel(data):
    return jsonify(bugService.bugDelService(request.json))

为啥你还要自己手动序列化

image
定义一个空 Scheme 返回

嗯嗯,我现在就是这么处理的

按理(HTTP)说空响应应该返回 204 状态码,这时候可以传递空字典作为 schema 参数(output({})):

@bug.delete("/bugDel")
@input(IDReq)
@output({})
def bugDel(data):
    pass

或者使用 EmptySchema:

from apiflask.schemas import EmptySchema


@bug.delete("/bugDel")
@input(IDReq)
@output(EmptySchema)
def bugDel(data):
    pass
1 Like

EmptySchema是个什么方法

一个空 Schema,和你自己定义的一样。不过区别是它会生成 204 响应,而不是 200。