Explosion AI运行FastAPI应用程序的一系列实用工具
项目描述
FastAPI Extras
这个库是Explosion AI运行FastAPI应用程序的一系列实用工具的集合。
HttpizeErrorsAPIRouter
这个自定义路由的主要功能是通过在FastAPI路由声明中添加httpize_errors
关键字参数,来处理每个路由的错误,而不是通过全局异常处理器。这允许每个路由返回正常的Python错误,而不是FastAPI的HTTPException
类,以获取有效的响应。
它还记录每个请求,并在响应上设置X-Response-Time
头
一个示例路由
@router.get("/testing", httpize_errors={ValueError: 400})
def test_route(i: int):
if i < 1:
raise ValueError("Bad Input Data")
return {"i": i}
如果抛出ValueError,这个自定义路由知道返回一个状态码为400(错误请求)的Response,并返回提供给ValueError
的消息
使用方法
FastAPI没有内置支持覆盖应用路由器,但是这由于我们在路由声明中添加了一个新关键字参数是必需的。FastAPI不传递**kwargs
,它只传递明确的命名关键字参数。
为了解决这个问题,我们需要手动覆盖应用路由器,并在所有路由都包含在主应用中之后刷新路由。这看起来像
from fastapi import FastAPI
from fastapi_extras import HttpizeErrorsAPIRouter, init_app
import uvicorn
# API Router (could be in another module)
api_router = HttpizeErrorsAPIRouter(tags=["tests"])
@api_router.get("/testing", httpize_errors={ValueError: 400})
def test_route(i: int):
if i < 1:
raise ValueError("Bad Input Data")
return {"i": i}
# Main app definition
app = FastAPI()
# Overwrite App Router to use the custom HttpizeErrorsAPIRouter
app.router = HttpizeErrorsAPIRouter.from_app(app)
# Include API Router from above
app.include_router(api_router)
# Refresh the App (this rebuilds the Starlette Middleware Stack)
init_app(app)
uvicorn.run(app)
项目详情
关闭
fastapi-explosion-extras-0.4.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 466feab548c23d7d0a764fd9e88a6d610e800b14a2d894c37221b7bc2f6c54b4 |
|
MD5 | 42878dfcc7fac353bac0d62f11f0734c |
|
BLAKE2b-256 | 42728c19ee65c6e95646039c8d8c2c34c12e687bc5279589dff71b6267a23573 |
关闭
fastapi_explosion_extras-0.4.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d5b11ade0341914fcd9a2e22edeaa492134ea3c9590f299d2b343b87d30ace4e |
|
MD5 | 1328b101b93d4856f5108925795d955f |
|
BLAKE2b-256 | 77461c032d0f1a63500b6a3a49cb8bc3cf0130bfc60054aa7a471f351854e120 |