Sobes.tech
Назад к вопросам
Middle
6

Как реализуете обработку ошибок в FastAPI и возврат корректных HTTP статусов?

Компании, где спрашивали
fabriqeue

Ответ от нейросети

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-статусы и сообщения.