cortaron la parte del mensaje : P
Bienvenida
¿Qué necesitas para seguir aprendiendo FastAPI?
Refactorización y modularización
Response Model
Mejorando la calidad del código: eliminando líneas duplicadas
Status Code personalizados
Entradas de datos avanzadas
Formularios
Resolviendo errores en el código
Cookie y Header Parameters
Archivos
Utilizando las clases File y UploadFile
Manejo de errores
HTTPException
Documentación interactiva
Comenzando a ordenar nuestra documentación: etiquetas
Nombre y descripción de una path operation
Deprecar una path operation
Tu primera API
Presentación del proyecto: Twitter
Configuración inicial del proyecto
Modelos: User
Modelos: Tweet
Esqueleto de las Path Operations: Users
Esqueleto de las Path Operations: Tweets
Registrando usuarios
Creando la lógica del registro de usuarios
Mostrando usuarios
Publicando Tweets
Home de nuestra API
Conclusiones
Has creado tu primera API
Aportes 12
Preguntas 6
cortaron la parte del mensaje : P
Podrás seguir todos mis apuntes escritos en Notion en:
https://rain-scabiosa-74f.notion.site/Curso-de-FastAPI-Avanzado-189668eeee1a45168e46c5be56312967
Si te gusta dejame un corazoncito ♥
FastApi no funciona por defecto con formularios debemos dar uso de la libreria python multipart instalas usando
$ pip install python-multipart
Tienes que importar Form de FastAPI
from fastapi import Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}
Usando Form puedes validar la data de la misma forma que lo harías con Path, Query y Body
Los cursos de Facundo son como las series, cada capítulo te deja con la incógnita de que pasará en el siguiente video y de la nada ya han pasado 4 horas jajaja
Para excluir el password del response, se puede usar
response_model_exclude={'password'}
En el Ejemplo del video quedaria algo asi:
from pydantic import BaseModel, Field
from fastapi import FastAPI, Form
app: FastAPI = FastAPI()
class LoginOut(BaseModel):
username: str = Field(..., max_length=20, example='gus')
password: str = Field(..., min_length=2, max_length=20, example='123')
message: str = Field(default='Login successful :)', description='Description message')
@app.post(
path='/login',
response_model=LoginOut,
status_code=200,
response_model_exclude={'password'},
)
def login(username: str = Form(...), password=Form(...)):
return LoginOut(username=username, password=password)
La documentación interactiva de la API en Swagger UI se me hace muy familiar (pero no igual) al panel de administración de Django.
Aquí dejo mis notas del curso, espero les sirva.
https://www.evernote.com/shard/s458/sh/407e6bc7-b81d-84be-d0a8-8d98160bf8be/1ac7be64a48f653bfe34408cfc97bcad
No se ve como añade el mensaje de respuesta, pero yo lo realicé de la siguiente manera.
# Pydantic
from pydantic import BaseModel
from pydantic import Field
# FastAPI
from fastapi import FastAPI
from fastapi import status
from fastapi import Form
app = FastAPI()
# ==========
# Models
# ==========
class LoginOut(BaseModel):
username: str = Field(...,
description='Username',
example='admin')
message: str = Field(default='Login successful',
description='Message to return to the user')
# ==========
# Endpoints
# ==========
@app.get('/')
def default():
return {
'message': 'Hello World'
}
@app.post(
path='/login',
response_model=LoginOut,
status_code=status.HTTP_200_OK,
)
def post(
username: str = Form(...,
min_length=3,
max_length=10,
example='root'),
password: str = Form(...,
min_length=8,
max_length=50,
example='toor'),
) -> LoginOut:
# Do something with the data
print(password)
# Return the response body
return LoginOut(username=username)
librería para trabajar con formularios:
pip install python-multipart
Para agregar el paquete y empezar bien la clase utilizamos en la consola:
pip3 install python-multipart
Y tengo sospecha de que este paquete se utilizara en la siguiente clase y no aún.
Tip: no es necesario escribir 2 commits como hace el profe, basta con escribir
git commit -am "mensaje"
y automaticamente se guarda todo y se crea el commit
pip3 install python-multipart
username: str = Field(
...,
min_length=3,
max_length=20,
example='jhonsonpics'
)
message: str = 'Succesfully Logged'
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.