Обработка ошибок

Введение в FastAPI

Matt Eckerle

Software and Data Leader

Две основные причины для обработки ошибок

Ошибка пользователя

  • Неверный или устаревший URI
  • Отсутствующие или некорректные входные данные
@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Return an error
    else:
        crud.delete_item(item)
        return {}

Ошибка сервера

  • Произошло что-то иное
@app.delete("/items")
def delete_item(item: Item):
    try:
        crud.delete_item(item)
    except Exception:
        # Return an error
    return {}
Введение в FastAPI

HTTP-коды состояния: «уровни строгости»

  • Позволяет API указывать статус в ответе
    • Успех, сбой, ошибка и т. д.
  • Конкретные коды определены в протоколе HTTP
  • Диапазон: 100 - 599
  • Категория определяется первой цифрой (1 -5)
  1. Информационные ответы (100 - 199)
  2. Успешные ответы (200 - 299)
  3. Сообщения о перенаправлении (300 - 399)
  4. Ошибки клиента (400 - 499)
  5. Ошибки сервера (500 - 599)
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
Введение в FastAPI

Распространённые HTTP-коды состояния

Успех (200 - 299)

  • 200 OK
    • Стандартный ответ об успехе
  • 201 Created
    • Специфично для операции POST
  • 202 Accepted
    • Неопределённый. «В процессе»
  • 204 No Content
    • Успех! Больше нечего сообщить

Другие ответы

  • 301 Moved Permantently
    • URI изменён постоянно
  • 400 Bad Request
    • Ошибка клиента
  • 404 Not Found
    • Сервер не может найти запрошенный ресурс
  • 500 Internal Server Error
    • Сервер столкнулся с ситуацией, которую не может обработать
Введение в FastAPI

Обработка ошибок с помощью кодов состояния

from fastapi import FastAPI, HTTPException

app = FastAPI()

@app.delete("/items")
def delete_item(item: Item):
    if item.id not in item_ids:
        # Send response with status 404 and specific error message
        raise HTTPException(status_code=404, detail="Item not found.")
    else:
        delete_item_in_database(item)
        return {}
Введение в FastAPI

Давайте попрактикуемся!

Введение в FastAPI

Preparing Video For Download...