Back to questions
Middle
5
Как реализуете обработку ошибок в FastAPI и возврат корректных HTTP статусов?
Companies where asked
fabriqeue
Answer from AI
sobes.tech AI
В FastAPI обработку ошибок можно реализовать с помощью исключений и обработчиков исключений (exception handlers). Для возврата корректных HTTP статусов используется класс HTTPException.
Пример обработки ошибки и возврата статуса 404:
from fastapi import FastAPI, HTTPException
app = FastAPI()
items = {"foo": "The Foo item"}
@app.get("/items/{item_id}")
async def read_item(item_id: str):
if item_id not in items:
raise HTTPException(status_code=404, detail="Item not found")
return {"item": items[item_id]}
Для более сложных ошибок можно создавать собственные исключения и регистрировать обработчики:
from fastapi import Request
from fastapi.responses import JSONResponse
class MyCustomError(Exception):
def __init__(self, name: str):
self.name = name
@app.exception_handler(MyCustomError)
async def custom_exception_handler(request: Request, exc: MyCustomError):
return JSONResponse(
status_code=400,
content={"message": f"Ошибка: {exc.name}"},
)
@app.get("/error")
async def error_endpoint():
raise MyCustomError(name="Что-то пошло не так")
Таким образом, можно централизованно обрабатывать ошибки и возвращать клиенту понятные HTTP-статусы и сообщения.