APIFlask Base response schema customization


我感觉上面的BaseResponse并没有生效。这个文档看了有点不明白。
say_hello函数里面,随便return个jason字符串,最终也没有按照BaseResponse输出。

能提供一下复现代码吗?

我get到你的疑问点了

实际上是文档里的这个示例不太好,太简略了
say_hello函数没有使用@app.output装饰器,所以看不出来这个写法的作用和好处

我尝试用下面这个示例说明一下:

from apiflask import APIFlask, Schema
from apiflask.fields import String, Integer, Field

app = APIFlask(__name__)


# 定义一个Schema作为response的data字段
class PetOut(Schema):
    id = Integer()
    name = String()
    category = String()


class BaseResponse(Schema):
    data = Field()  # the data key
    message = String()
    code = Integer()


app.config['BASE_RESPONSE_SCHEMA'] = BaseResponse
app.config['BASE_RESPONSE_DATA_KEY '] = 'data'
pet = {
    'id': 1,
    'name': 'Coco',
    'category': 'dog'
}


# 使用@app.output装饰器声明data字段Schema
@app.get('/')
@app.output(PetOut)
def say_hello():
    return {
        'data': pet,
        'message': 'Success!',
        'code': 200
    }

这个写法的好处在于,当你使用@app.output装饰器声明了Schema类型时,apiflask会根据当前视图函数上的Schema为data字段提供类型校验

是的,我过了几天才知道里面原因了,我觉得这个例子摆在这边不合适。

你最近发现了文档里的很多问题
方便的话,可以提一下pr :grinning: