fastapi HTTPException
时间: 2025-02-08 13:11:14 浏览: 26
### 使用 `HTTPException` 处理异常
在 FastAPI 应用程序中,可以通过抛出 `HTTPException` 来向客户端发送特定的 HTTP 响应。这使得开发者能够精确控制应用程序的行为并提供详细的错误信息。
#### 抛出 `HTTPException`
当请求不符合预期条件时,可以使用 `raise` 关键字触发 `HTTPException` 实例来中断正常的执行流程并向调用者返回指定的状态码和消息:
```python
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get("/path/{name}")
async def get_name(name: str):
if name != "Teacher Li":
raise HTTPException(status_code=404, detail=f"name: {name} not found")[^1]
return {"name": name}
```
这段代码展示了如何定义一个路径参数路由,并在其内部实现逻辑判断;如果传入的名字不是预设值,则会引发带有自定义详情说明的 404 Not Found 错误。
#### 自定义异常处理器
除了直接抛出标准的 `HTTPException` 对象外,还可以通过重写默认行为来自定义这些异常被处理的方式。这意味着可以在不改变原有业务逻辑的前提下调整最终呈现给用户的界面风格或附加额外数据字段等操作[^2]:
```python
from fastapi import FastAPI, Request, status
from fastapi.responses import JSONResponse
from pydantic import BaseModel
class UnicornException(Exception):
def __init__(self, name: str):
self.name = name
@app.exception_handler(UnicornException)
async def unicorn_exception_handler(request: Request, exc: UnicornException):
return JSONResponse(
status_code=status.HTTP_418_IM_A_TEAPOT,
content={"message": f"Oops! {exc.name} did something."}
)
```
此部分介绍了创建一个新的异常类以及相应的处理器函数的方法,允许更灵活地管理不同类型的错误场景。
#### 添加响应描述
为了让 API 文档更加清晰易懂,在设计 RESTful 接口时最好为每种可能发生的状况都配上适当的文字解释。这样不仅有助于提高用户体验感,也方便后续维护人员理解现有功能的工作原理[^3]:
```python
from fastapi import HTTPException
@app.get("/items/")
async def read_items():
if some_condition:
raise HTTPException(status_code=404, detail="Item not found")
return {"item": "Foo"}
```
上述例子中的 `detail` 参数即用于传递具体的提示文字给前端展示。
阅读全文
相关推荐


















