Операції 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-запиту
  • Заголовок визначає кодування тіла
  • Підтримує вкладені структури даних
  • Найпоширеніші кодування для API: JSON і XML
  • У FastAPI типово використовується JSON

Приклад 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...