能提供一下复现代码吗?
我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