15.FastAPI 框架错误处理
-
fastapi 默认的错误处理方式,返回格式是json形式
from fastapi import APIRouter, status, Form, File, UploadFile, HTTPException from pydantic import BaseModel, EmailStr """Handling Errors 错误处理""" @app04.get("/http_exception") async def http_exception(city: str): if city != "Beijing": raise HTTPException(status_code=404, detail="City not found!", headers={"X-Error": "Error"}) return {"city": city}
-
重写错误处理逻辑,在主运行文件下(run.py)重写异常处理代码
from fastapi.exceptions import RequestValidationError from fastapi.responses import PlainTextResponse from starlette.exceptions import HTTPException as StarletteHTTPException @app.exception_handler(StarletteHTTPException) # 重写HTTPException异常处理器 async def http_exception_handler(request, exc): """ :param request: 这个参数不能省 :param exc: :return: """ return PlainTextResponse(str(exc.detail), status_code=exc.status_code) # 以文本形式返回 @app.exception_handler(RequestValidationError) # 重写请求验证异常处理器 async def validation_exception_handler(request, exc): """ :param request: 这个参数不能省 :param exc: :return: """ return PlainTextResponse(str(exc), status_code=400) # 以文本形式返回
-
重写HTTPException异常处理器,响应实例和默认的json形式做对比
-
重写请求验证异常处理器,示例
-
未重写异常处理前,采用默认的请求验证异常处理,按道理应返回json形式异常
- 正常填写
- 未按布尔格式填写参数,出异常,以json 返回
-
重写异常处理,以文本形式输出
- 正常填写
-
未按布尔格式填写参数,出异常,以文本形式 返回
-
-