FastAPI: Transformando el desarrollo web en Python
Published on
La reputación de Python como lenguaje de referencia para el desarrollo de aplicaciones web ha sido amplificada por impresionantes frameworks como Django, Flask, Falcon y muchos más. Gracias al estatus de Python como lenguaje clave para el aprendizaje automático, se convierte en una herramienta conveniente para empaquetar modelos y exponerlos como servicios. Sin embargo, un competidor relativamente nuevo está transformando este espacio: FastAPI. Inspirándose en sus predecesores, FastAPI perfecciona y mejora sobre ellos, ofreciendo una serie de características emocionantes.
FastAPI: Un nuevo paradigma en los frameworks web de Python
FastAPI, a pesar de ser relativamente nuevo, ha dejado su huella en la comunidad de Python debido a su equilibrio sorprendente entre funcionalidad y libertad para los desarrolladores. Se asemeja a Flask en su filosofía, pero con un equilibrio más saludable. Este nuevo framework web no solo se beneficia de las fortalezas de sus predecesores, sino que también aborda sus deficiencias.
Uno de los puntos fuertes de FastAPI es su interfaz simple pero efectiva. Su enfoque innovador para definir esquemas con Pydantic, otra poderosa biblioteca de Python utilizada para la validación de datos, reduce la carga de trabajo de los desarrolladores. Esta característica, combinada con el mecanismo de manejo automático de errores, convierte a FastAPI en un framework extremadamente amigable para los desarrolladores.
from fastapi import FastAPI
from pydantic import BaseModel
class User(BaseModel):
email: str
password: str
app = FastAPI()
@app.post("/login")
def login(user: User):
# procesamiento del inicio de sesión
return {"msg": "inicio de sesión exitoso"}
Este ejemplo simple muestra la intuición de FastAPI. Puedes iniciar tu aplicación FastAPI con Uvicorn y estará lista para manejar solicitudes en poco tiempo.
La ventaja asincrónica de FastAPI
FastAPI está liderando el camino para eliminar una de las principales desventajas de los frameworks web WSGI de Python: su incapacidad para manejar solicitudes de forma asíncrona. Con la capacidad de FastAPI para aprovechar ASGI de Python, iguala las capacidades de rendimiento de los frameworks web en Node.js o Go. Los desarrolladores pueden declarar fácilmente puntos finales con la palabra clave 'async', mejorando el rendimiento de la aplicación.
@app.post("/")
async def endpoint():
# funciones asíncronas en acción
return {"msg": "¡FastAPI es increíble!"}
Simplificando las inyecciones de dependencia con FastAPI
Las inyecciones de dependencia nunca han sido tan simples, gracias al enfoque innovador de FastAPI. Proporciona un sistema de inyección incorporado que ayuda a gestionar las dependencias sin esfuerzo. La evaluación en tiempo de ejecución de las dependencias de FastAPI simplifica las pruebas y permite realizar comprobaciones sofisticadas, facilitando la autenticación de usuarios y otros procedimientos similares.
from fastapi import FastAPI, Depends
from pydantic import BaseModel
class Comment(BaseModel):
username: str
content: str
app = FastAPI()
database = {
"articles": {
1: {
"title": "Principales 3 razones para empezar a usar FastAPI ahora",
"comments": []
}
}
}
def get_database():
return database
@app.post("/articles/{article_id}/comments")
def post_comment(article_id: int, comment: Comment, database = Depends(get_database)):
database["articles"][article_id]["comments"].append(comment)
return {"msg": "¡comentario publicado!"}
Integración sencilla de bases de datos
FastAPI no limita tu elección de bases de datos. Ya sea SQL, MongoDB o Redis, puedes agregar tu base de datos preferida a tu conjunto de tecnologías sin complicaciones innecesarias, a diferencia de algunos frameworks como Django. FastAPI facilita la integración, permitiendo que la elección de la base de datos, en lugar del framework, determine la cantidad de trabajo involucrado.
from fastapi import FastAPI, Depends
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///./database.db")
Session = sessionmaker(bind=engine)
def get_db():
return Session()
app = FastAPI()
@app.get("/")
def an_endpoint_using_sql(db = Depends(get_db)):
# SQLAlchemy en acción
return {"msg": "¡operación exitosa!"}
Puedes acceder a FastAPI en GitHub aquí (opens in a new tab).
Abrazando GraphQL y una documentación estelar
La compatibilidad de FastAPI con GraphQL es otra característica importante. Cuando se trata de modelos de datos complejos, REST puede resultar desafiante. Aquí es donde GraphQL, integrado sin problemas con FastAPI y Graphene, viene al rescate, reduciendo las modificaciones frontend que de otro modo requerirían actualizar el esquema del punto final.
FastAPI también cuenta con una excelente documentación, lo que aumenta su atractivo. A pesar de ser más joven que Django o Flask, rivaliza con ellos en cuanto a la calidad de la documentación.
Conclusión
En resumen, ya sea que estés buscando un framework rápido y ligero para tus modelos de aprendizaje automático o necesites algo más robusto, FastAPI ofrece todo. Su simplicidad, versatilidad y rendimiento seguramente te impresionarán, convirtiéndolo en un imprescindible para cualquier desarrollador de Python.