Introducción a FastAPI
¿Qué es FastAPI? con Sebastián Ramírez @Tiangolo
Instalación de FastAPI y creación de tu primera aplicación
Documentación automática con Swagger
Métodos HTTP en FastAPI
FastAPI Path Operations
Método GET en FastAPI
Crear parámetros de ruta en FastAPI
Parámetros Query en FastAPI
Método POST en FastAPI
Métodos PUT y DELETE en FastAPI
Validaciones con Pydantic
Creación de esquemas con Pydantic
Validaciones de tipos de datos con Pydantic
Validaciones de parámetros con Pydantic
JSONResponse: Tipos de respuestas en FastAPI
Códigos de estado HTTP en FastAPI
Autenticación en FastAPI
Flujo de autenticación en FastAPI
Generando tokens con PyJWT
Validando tokens con PyJWT
Middlewares de autenticación en FastAPI
Conexión con bases de datos en FastAPI
SQLAlchemy: el ORM de FastAPI
Instalación y configuración de SQLAlchemy
Creación de modelos con SQLAlchemy
Registro de datos con SQLAlchemy
Consulta de datos con SQLAlchemy
Modificación y eliminación de datos con SQLAlchemy
SQLModel: el futuro ORM de FastAPI
Modularización
Manejo de errores y middlewares en FastAPI
Creación de routers en FastAPI
Servicios para consultar datos
Servicios para registrar y modificar datos
Despliegue de Aplicación en FastAPI
Preparando el proyecto para desplegar a producción
¿Cómo elegir entre GitHub y GitLab?
Crear repositorio en GitLab
Crear Droplet en Digital Ocean
Instalación de herramientas para el servidor
Ejecutando FastAPI con NGINX
Próximos pasos
¿Quieres más cursos de FastAPI?
Bonus
Cómo crear una API de alto rendimiento en tiempo récord - Sebastián Ramírez
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Pablo España
Explorando el uso del método POST en FastAPI
Adentrarse en la construcción de una API implica familiarizarse con diversos métodos para el manejo de datos. Uno de los métodos fundamentales es el POST, esencial para crear o modificar registros en una base de datos. Aprender a implementarlo correctamente puede ser decisivo para el éxito de una API. En esta ocasión, desglosaremos cómo hacer uso del método POST en FastAPI y afrontaremos el desafío de construir un endpoint para registrar películas.
Recibir datos a través de POST es una práctica común para enviar información que no debe ir en la URL, como cuando registramos o modificamos datos sensibles. En FastAPI, trabajar con el método POST es sencillo y permite mantener la seguridad de los datos transmitidos. Te mostraremos cómo definir el método en tu API para recibir datos de manera efectiva.
Utilizar el método POST en FastAPI implica seguir una serie de pasos claros y definidos que aseguran la correcta recepción y manejo de la data enviada. Aquí te detallo cómo llevarlo a cabo:
Antes de avanzar, vamos a revisar la solución al reto de filtrado de películas por categoría. Implementar un filtro a través de un parámetro QUERY es un excelente ejercicio para profundizar en cómo FastAPI maneja los parámetros. El uso de un bucle FOR en línea permitió filtrar y devolver las películas que coincidieran con la categoría deseada, simplificando la tarea considerablemente.
Inicialmente, se podía incurrir en el error de recibir datos como parámetros query en lugar de en el cuerpo de la petición. Esto se soluciona especificando que los datos deben recibir la clase body, mejorando así la estructura de la petición y la seguridad de los datos transmitidos.
Ahora que has aprendido a registrar películas utilizando el método POST, te animo a que tomes el siguiente escalón y pruebes a implementar los métodos PUT y DELETE. Estos serán cruciales para editar y eliminar registros de manera eficiente. La documentación de FastAPI será tu aliada en este desafío, así que no dudes en consultarla.
El método POST en FastAPI es poderoso y flexible, permitiéndote manejar datos de forma segura y eficiente. Con la solución al reto de filtrado y los pasos para implementar correctamente el método POST, estas herramientas son esenciales para seguir construyendo tu API. Acepta el desafío de los métodos PUT y DELETE y recuerda que cada paso que das es un avance en tu camino de aprendizaje en el desarrollo de aplicaciones y APIs. ¡Adelante con tu proyecto!
Aportes 25
Preguntas 3
esta fue una implementacion que utilice para el metodo put que se usa para modificar un elemento ya existente el value : str | int se usa para indicarle que ese parametro puede ser un string o un int, esta implementacion funciona para cambiar de a un key:value en el diccionario estoy analizando como estructurar el codigo para actualizar mas de un elemento en una sola interaccion… ideas?
Mi solucion
@app.get('/movies/', tags=['movies'])
def getMoviesByCategory(category: str, year: int):
return list(filter(lambda item : item['year'] == year or item['category'] == category, movies))
Código generado por una IA
from fastapi import FastAPI, Body, HTTPException
from pydantic import BaseModel
class Movie(BaseModel):
id: int
name: str
year: int
category: str
app = FastAPI()
movies = []
@app.post("/movies/", tags=["Movies"])
def create_movie(movie: Movie):
movies.append(movie.dict())
return {"message": "Película creada correctamente"}
@app.put("/movies/{id}", tags=["Movies"])
def update_movie(id: int, movie: Movie = Body(...)):
for index, stored_movie in enumerate(movies):
if stored_movie["id"] == id:
movies[index] = movie.dict()
return {"message": "Película actualizada correctamente"}
raise HTTPException(status_code=404, detail="Película no encontrada")
@app.delete("/movies/{id}", tags=["Movies"])
def delete_movie(id: int):
for movie in movies:
if movie["id"] == id:
movies.remove(movie)
return {"message": "Película eliminada correctamente"}
raise HTTPException(status_code=404, detail="Película no encontrada")
Para actualizar y eliminar una pelicula…
# Actualizar una pelicula
@app.put("/movies/{id}", tags=["Movies"])
def update_movie(id: int, name: str = Body(), year: int = Body(), category: str = Body()):
for movie in movies:
if(movie["id"] == id):
movie["name"] = name
movie["year"] = year
movie["category"] = category
return movie
return {"No existe la pelicula"}
# Eliminar una pelicula
@app.delete("/movies/{id}", tags=["Movies"])
def delete_movie(id: int):
for movie in movies:
if(movie["id"] == id):
movies.remove(movie)
return {"message": "Pelicula eliminada correctamente"}
return {"No existe la pelicula"}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?