POST-операции

Введение в FastAPI

Matt Eckerle

Software and Data Engineering Leader

GET vs. POST

GET-операции

  • Традиционное назначение: запрос информации об объекте

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

  • Можно отправить из браузера

api = "http://moviereviews.co/reviews/1"
response = requests.get(api)

POST-операции

  • Традиционное назначение: создание нового объекта

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

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

    • например, cURL, requests
api = "http://moviereviews.co/reviews/"
body = {"text": "A great movie!"}
response = requests.post(api, json=body)
Введение в FastAPI

Тело HTTP-запроса

  • Данные передаются после заголовка HTTP-запроса
  • Заголовок указывает кодировку тела
  • Поддерживает вложенные структуры данных
  • JSON и XML — наиболее распространённые форматы для API
  • JSON — формат по умолчанию в FastAPI

Пример JSON

# Create a record for a movie review
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
Введение в FastAPI

BaseModel из pydantic

pydantic: интерфейс для определения схем тела запроса и ответа

Примечание

Здесь Review вложен в MovieReview

from pydantic import BaseModel

class Review(BaseModel):
    num_stars: int
    text: str
    public: bool = False

class MovieReview(BaseModel):
    movie: str
    # Nest Review in MovieReview
    review: Review
Введение в FastAPI

Обработка POST-запроса

POST-эндпоинт для создания нового отзыва о фильме:

  • Эндпоинт: /reviews
  • Входные данные: MovieReview (из предыдущего слайда)
  • Выходные данные: db_review (определён в другом месте)
@app.post("/reviews", response_model=DbReview)
def create_review(review: MovieReview):
    # Persist the movie review to the database
    db_review = crud.create_review(review)
    # Return the review including database ID
    return db_review
1 https://fastapi.tiangolo.com/tutorial/sql-databases/#crud-utils
Введение в FastAPI

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

Введение в FastAPI

Preparing Video For Download...