默認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錯誤')