15.FastAPI 框架错误处理

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}
    
    

    15.FastAPI 框架错误处理

    15.FastAPI 框架错误处理

  • 重写错误处理逻辑,在主运行文件下(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形式做对比

      15.FastAPI 框架错误处理

      15.FastAPI 框架错误处理

    • 重写请求验证异常处理器,示例

      • 未重写异常处理前,采用默认的请求验证异常处理,按道理应返回json形式异常

        • 正常填写

        15.FastAPI 框架错误处理

        • 未按布尔格式填写参数,出异常,以json 返回

        15.FastAPI 框架错误处理

      • 重写异常处理,以文本形式输出

        • 正常填写

        15.FastAPI 框架错误处理

        • 未按布尔格式填写参数,出异常,以文本形式 返回

          15.FastAPI 框架错误处理

上一篇:I/O error while reading input message; nested exception is java.io.IOException: Stream closed


下一篇:JAVA基础复习-异常处理