Операции PUT и DELETE

Введение в FastAPI

Matt Eckerle

Software and Data Engineering Leader

PUT и DELETE

Операции PUT

  • Традиционное использование: обновление существующего объекта

  • Параметры передаются через строку запроса и тело запроса

  • Требует приложения или фреймворка

    • например, cURL, requests
api = "http://moviereviews.co/reviews/1"
body = {"text": "A fantastic movie!"}
response = requests.put(api, json=body)

Операции DELETE

  • Традиционное использование: удаление существующего объекта

  • Параметры передаются через строку запроса и тело запроса

  • Требует приложения или фреймворка

    • например, cURL, requests
api = "http://moviereviews.co/reviews/1"
response = requests.delete(api)
Введение в FastAPI

Обращение к существующим объектам

  • Без ORM: приложение само сопоставляет объект с ID
  • ID базы данных — уникальный идентификатор
  • Соглашение _id для ID базы данных
    • review_id: таблица reviews, столбец id
    • То же соглашение во фреймворках с ORM
from pydantic import BaseModel

class DbReview(BaseModel):
    movie: str
    num_stars: int
    text: str
    # Reference database ID of Reviews
    review_id: int
Введение в FastAPI

Обработка операции PUT

Эндпоинт PUT для обновления отзыва о фильме:

  • Эндпоинт: /reviews
  • Входные данные: DbReview (из предыдущего слайда)
  • Выходные данные: DbReview
@app.put("/reviews", response_model=DbReview)
def update_review(review: DbReview):
    # Update the movie review in the database
    db_review = crud.update_review(review)
    # Return the updated review
    return db_review
Введение в FastAPI

Обработка операции DELETE

Эндпоинт DELETE для удаления отзыва о фильме:

  • Эндпоинт: /reviews
  • Входные данные: DbReview
  • Выходные данные: {}
@app.delete("/reviews")
def delete_review(review: DbReview):
    # Delete the movie review from the database
    crud.delete_review(review)
    # Return nothing since the data is gone
    return {}
Введение в FastAPI

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

Введение в FastAPI

Preparing Video For Download...