🌲 [apiflask] 支持为响应生成 header schema

项目地址: apiflask/apiflask
相关 issue:Is there a way to add headers to the response schema? · apiflask/apiflask · Discussion #496 · GitHub
难度:中等

在 APIFlask 中,响应的 schema 通过 app.output 装饰器来处理。响应的首部(header)可以直接在视图函数返回,但是没有对应的参数来接受传递 header 的 schema。你需要为 output 装饰器添加一个参数来接受传入 header schema,并且借助 apispec 为 schema 生成对应的 OpenAPI spec。

PR 需要包含:

  • 功能代码
  • 文档
  • 测试
  • 更新 Changelog

我要认领(uncle-lv)

这个功能的API应该是什么样的?您能提供一个样例吗?

大概是这样:

class HeaderSchema(Schema):  # 用户定义的 schema
    pass

@app.output(SomeSchema, status_code='200', header=HeaderSchema)
def hello():
    pass

怎么返回header参数?

像这样可以吗:

class HeaderSchema(Schema):  # 用户定义的 schema
    pass

@app.output(SomeSchema, status_code='200', header=HeaderSchema)
def hello():
    ...
    return some_schema, header_schema

你是指返回 headers 字典本身?我的想法是 headers 的 schema 只是用来生成 OpenAPI spec。它会像其他参数一样在这里收集绑定到 f._spec 上。

对了,参数名用 headers 会更好一些。

我理解错了,我以为是需要用schema去包装headers。

不太确定是不是需要这个效果 :joy: feat: response headers schema #511 @greyli

1 个赞

哈哈,差不多,我晚点 review。这几天要准备参加 PyCon 的事情

PR 已合并,感谢!