请求错误处理
某些情况下,需要向客户端返回错误提示。
需要向客户端返回错误提示的场景主要如下:
- 客户端没有执行操作的权限
- 客户端没有访问资源的权限
- 客户端要访问的项目不存在
- 服务器内部错误
遇到这些情况时,通常要返回 4XX(400 至 499)HTTP 状态码。
4XX 状态码与表示请求成功的 2XX(200 至 299) HTTP 状态码类似。
只不过,4XX 状态码表示客户端发生的错误。如【404访问的资源不存在】
404错误处理
如在调用路径操作函数里的工具函数时,触发了 HTTPException
,FastAPI 就不再继续执行路径操作函数中的后续代码,而是立即终止请求,并把 HTTPException
的 HTTP 错误发送至客户端。
from fastapi import FastAPI, HTTPException
app = FastAPI()
items = {"foo": "The Foo Wrestlers"}
@app.get("/items/{item_id}")
async def read_item(item_id: str):
if item_id not in items:
raise HTTPException(status_code=404, detail="访问的资源不存在咯")
return {"item": items[item_id]}
添加自定义响应头
有些场景下要为 HTTP 错误添加自定义响应头。在某些方面的出于安全需要。
@app.get("/items-header/{item_id}")
async def read_item_header(item_id: str):
if item_id not in items:
raise HTTPException(
status_code=404,
detail="Item not found",
headers={"X-Error": "There goes my error"},
)
return {"item": items[item_id]}
错误情况下的响应头