Operações POST

Introdução ao FastAPI

Matt Eckerle

Software and Data Engineering Leader

Operações GET vs. POST

Operações GET

  • Uso tradicional: pedir informações sobre um objeto

  • Parâmetros enviados na query string

  • Pode ser enviado de um navegador

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

Operações POST

  • Uso tradicional: criar um novo objeto

  • Parâmetros na query string e no corpo da requisição

  • Requer um aplicativo ou framework

    • ex.: cURL, requests
api = "http://moviereviews.co/reviews/"
body = {"text": "A great movie!"}
response = requests.post(api, json=body)
Introdução ao FastAPI

Corpo da requisição HTTP

  • Dados enviados após o cabeçalho HTTP
  • Cabeçalho define a codificação do corpo
  • Suporta estruturas de dados aninhadas
  • JSON e XML são as codificações mais comuns em APIs
  • JSON é a codificação padrão do FastAPI

Exemplo JSON

# Criar um registro para uma resenha de filme
{"movie": "The Neverending Story",
 "review": {"num_stars": 4,
            "text": "Great movie!",
            "public": true}}
Introdução ao FastAPI

Usando BaseModel do pydantic

pydantic: interface para definir esquemas de corpo de requisição e resposta

Observação

Estamos aninhando Review dentro de 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
Introdução ao FastAPI

Como lidar com uma operação POST

Endpoint POST para criar uma nova resenha de filme:

  • Endpoint: /reviews
  • Entrada: MovieReview (do slide anterior)
  • Saída: db_review (definido em outro lugar)
@app.post("/reviews", response_model=DbReview)
def create_review(review: MovieReview):
    # Persistir a resenha no banco de dados
    db_review = crud.create_review(review)
    # Retornar a resenha com o ID do banco
    return db_review
1 https://fastapi.tiangolo.com/tutorial/sql-databases/#crud-utils
Introdução ao FastAPI

Vamos praticar!

Introdução ao FastAPI

Preparing Video For Download...