如何在Flask-Smorest中移除OpenAPI页面的‘Default error response’(默认错误响应)
如何在Flask-Smorest中移除OpenAPI页面的‘Default error response’(默认错误响应)
嘿,我来帮你搞定这个问题!Flask-Smorest默认会给每个API端点自动加上一些通用的错误响应(比如400、401这类)到OpenAPI文档里,刚好你这个get方法不会返回错误,所以咱们可以通过两种方式移除这些默认项:
方式一:针对单个端点移除
直接在你的@blp.response装饰器里加上**exclude_defaults=True**参数就行,这样这个特定的get接口就不会再显示默认错误响应了。另外注意下你代码里写的ITEMS_SCHEMA可能是导入的ItemsSchema的笔误,记得保持名称一致哦。修改后的代码如下:
from flask.views import MethodView from flask_smorest import Blueprint from schemas.items import ItemsSchema blp = Blueprint("api", "items", url_prefix="/items", description="Operations on items") @blp.route('') class ItemsView(MethodView): # 添加exclude_defaults=True参数移除默认错误响应 @blp.response(status_code=200, schema=ItemsSchema, exclude_defaults=True) def get(self): # 这里写你的业务逻辑,比如返回物品列表 return {"items": []}
方式二:针对整个蓝图移除默认错误响应
如果这个蓝图下的所有接口都不需要默认错误响应,那可以在创建Blueprint的时候直接设置**default_error_response=False**,这样整个蓝图里的所有端点都会去掉默认错误响应:
blp = Blueprint( "api", "items", url_prefix="/items", description="Operations on items", default_error_response=False # 加入这个全局配置 )
另外提一句,如果之后你需要给某个端点手动添加特定的错误响应,还是可以用@blp.response单独定义的,比如@blp.response(404, description="未找到对应物品")这样就可以啦。
备注:内容来源于stack exchange,提问作者akpp
相关产品推荐
相关产品推荐

