Обробка помилок

Вступ до 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...