APIFlask应用手动抛出的错误未在API规范中显示,如何配置?
解决APIFlask手动抛出错误未纳入API规范的问题
APIFlask默认不会自动识别abort()手动抛出的错误并将其加入OpenAPI规范,不过可以通过以下两种方式解决:
1. 为特定错误码注册带规范的错误处理器
通过@app.error_processor为目标状态码注册处理器,同时用@doc装饰器声明响应规范,让APIFlask将该错误纳入全局API文档。示例代码:
from apiflask import APIFlask, abort, doc app = APIFlask(__name__) # 注册403错误处理器并添加规范描述 @app.error_processor(403) @doc(responses={403: {'description': '权限不足,无法访问目标资源'}}) def handle_403(e): return {'message': str(e)}, 403 # 示例接口 @app.get('/protected-resource') def get_protected_resource(): identity = None # 模拟无身份验证场景 if not identity: abort(403, message='当前用户无访问权限') return {'data': '敏感资源内容'}
2. 在接口装饰器中显式声明错误响应
如果某个错误仅属于特定接口,直接在@app.get(或其他请求方法装饰器)中通过responses参数声明该错误的规范,这样该接口的文档就会包含对应的错误定义。示例:
from apiflask import APIFlask, abort app = APIFlask(__name__) @app.get('/protected-resource', responses={403: {'description': '权限不足,无法访问此资源'}}) def get_protected_resource(): identity = None if not identity: abort(403, message='当前用户无访问权限') return {'data': '敏感资源内容'}
验证方式
完成上述配置后,重新生成API规范文件(比如访问应用的/openapi.yaml端点),就能看到手动抛出的错误响应已被纳入规范。
内容的提问来源于stack exchange,提问作者Md. Shohag Mia
相关产品推荐
相关产品推荐

