说明
在许多情况下,您需要将错误通知给正在使用API的客户端。FastAPI 使用 Python 的 HTTPException
异常进行处理,所以 raise
它。
实例
from fastapi import FastAPI,HTTPException import uvicorn app = FastAPI() @app.get("/user") async def read_item(age: int,name: str): if age < 18: # 返回客户端 500 状态码 及错误原因 raise HTTPException(status_code=500,detail="age 小于 18") return {"name": name,"age": age} if __name__ == '__main__': uvicorn.run( app = app, host = "127.0.0.1", port = 80, )
添加自定义 Headers
@app.get("/user") async def read_item(age: int,name: str): if age < 18: # 返回客户端 500 状态码 及错误原因 raise HTTPException( status_code=500, # detail 可以是 list、dict、str detail={"msg":"age 小于 18"}, # 自定义 headers headers={"X-Error": "There goes my error"} ) return {"name": name,"age": age}
自定义异常处理程序
from fastapi import FastAPI, Request from fastapi.responses import JSONResponse import uvicorn app = FastAPI() # 异常参数类 class UnicornException(Exception): def __init__(self, status_code: int, msg: str): # 错误状态码 self.status_code = status_code # 错误内容 self.msg = msg # 异常响应 @app.exception_handler(UnicornException) async def unicorn_exception_handler(request: Request, exc: UnicornException): return JSONResponse( # 错误响应状态码 status_code= exc.status_code, # 错误返回内容格式 content={"msg": exc.msg}, ) @app.get("/user/{name}") async def read_item(name: str): if name == "bigdata": # 错误提示 raise UnicornException(status_code=404, msg="用户名错误,没有该用户") return {"name": name} if __name__ == '__main__': uvicorn.run( app = app, host = "127.0.0.1", port = 80, )
测试URL:http://127.0.0.1/user/bigdata?name=bigdataboy
版权声明:《 【FastAPI】错误请求处理 》为明妃原创文章,转载请注明出处!
最后编辑:2020-5-29 09:05:47