fastapi之自定義異常處理


默認HttpExceptionError

# 默認HttpException 錯誤異常
@app04.get('/http_exception')
async def http_exception(city: str):
    if city != 'BeiJing':
        raise HTTPException(status_code=404, detail='city not found', headers={'x_token': 'xxx'})
    return {'message': 'no city'}

 

run.py 主程序中自定義異常

from starlette.exceptions import HTTPException as StarletteException
from fastapi.exceptions import RequestValidationError
from fastapi.responses import PlainTextResponse


""" 改寫默認的HttpException """


@app.exception_handler(StarletteException)  # 自定義HttpRequest 請求異常
async def http_exception_handle(request, exc):
    """

    :param request: 請求必不可少
    :param exc: 錯誤棧處理
    :return:
    """
    return PlainTextResponse(str(exc.detail), status_code=exc.status_code)
"""自定義RequestValidationError 重寫請求驗證異常"""


@app.exception_handler(RequestValidationError)
async def request_validatoion_error(request, exc):
    """
      重寫 request錯誤
    :param request: 必填項
    :param exc: 錯誤信息棧
    :return:
    """
    return PlainTextResponse(str(exc), status_code=exc.status_code)

chapter04程序拋出異常

""" 改寫異常處理,每次使用自定義的異常處理"""


@app04.get(
    '/http_error/{city_id}',
    summary= '測試HttpError',
    description='接口測試: 測試自定義HttpError',
    tags=['HttpExceptionError'],
    status_code=666
)
async def overwhite_http_error(city_id: int):

    if city_id != 1:
        return city_id
    else:
        raise HTTPException(status_code=418, detail='city_id錯誤')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM