top of page

Domina FastAPI y el poder de los tipos en Python: Guía introductoria imprescindible

Updated: Mar 24, 2023

FastAPI framework y Types con Python (rápidamente) 🐍

En este rápido tutorial te hablamos sobre las "sugerencias de tipo" o "type hints" que te permiten declarar el tipo de una variable, y cuales son necesarias para usar FastAPI.


FastAPI es un framework web de código abierto y de alto rendimiento para construir APIs modernas con Python 3.7+.


Este framework fue creado por Sebastián Ramírez, también conocido como @tiangolo, quien es un desarrollador de software colombiano :flag-co: y actualmente reside fuera del país.

Twit, Twitter de @tiangolo Sebasti{an ramirez
Twit de @tiangolo, Sebastian Ramirez creador de FastAPI al que le solicitaron +4 años de experiencia en su propia herramienta la cual fue creada y lanzada por él hacia menos de 1.5 años


FastAPI está basado en la especificación OpenAPI y el estándar JSON SchemaI por lo que el código se vuelve estándar haciéndolo fácil de documentar y la generación automática del cliente elimina la duplicación de código minimizando bugs. La creación de FastAPI fue el resultado de la necesidad de crear un framework que combinara el rendimiento y la eficiencia de los frameworks de baja latencia como Node.js o Go, con la facilidad de uso y la flexibilidad de los frameworks de Python. Además, Sebastián Ramírez también quería aprovechar las ventajas de OpenAPI para simplificar la documentación de las APIs.


Este framework crea documentación interactiva automática a partir de python 3.6, y entre las características que conocemos de FastAPI:

  • Framework web de Python de ligero y buen desempeño

  • Sencillo de escribir y aprender

  • Gracias a los type hints, el autocomplete está mejor optimizado que Flask

  • Finalmente, tiene validación para los modelos de API, con la libreria Pydantic

  • Además tiene muchos middlewares y plugins para complementar el desarrollo


Es la combinación de ​(Python 3.6 + sugerencias de tipo)​. Por lo que debes conocer sobre tipado para poder trabajar este framework.


FASTAPI

TALK DE LA SEMANA


Qué es Pydantic?

Pydantic es una librería de Python de parseo de datos y gestión de la configuración (más no de validación), sin embargo esto se encuentra incluido en su implementación.


El BaseModel de Pydantic define las estructuras de datos.

Class User(BaseModel):
  id: int
  name = 'John Doe'
  signup_ts: Optional[datetime] = None
  friends: List[int] = []

Al crear una librería, esta se puede validar con DocString, pero no hay un standard en DocString, entonces se usan las anotaciones de los tipos para construir los modelos.


En Python las anotaciones de los tipos se llaman Type Hints, que son sugerencias como forma de documentación. Pydantic usa estos, para construir los modelos. Por ejemplo, el modelo de usuario definido anteriormente establece tipos para cada campo que deberían ser exactos, sin embargo con Pydantic no sucede eso:

external_data = {
  'id': '123',
  'signup_ts': '2021-05-11',
  'friends': [0, 2, 3]
}

El id es un dato tipo string (debería ser tipo int según el modelo) sin embargo, es un string que se puede convertir a entero, lo mismo sucede con el timeStamp signup_ts, el cuales también tipo string que se puede convertir a un datetime. Con esto, Pydantic asegura la estructura de los datos de salida, en lugar de los datos de entrada del external_data.



Cómo iniciar con FastAPI

Primero, debemos tener Python instalado, fastAPI trabaja sobre la versión 3.6 en adelante:

pip install fastapi

1. Crea un archivo main.py con:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

2. Abre tu navegador en http://127.0.0.1:8000/items/5?q=somequery. Donde verás la respuesta JSON como:


{"item_id": 5, "q": "somequery"}

Con estos dos sencillos pasos, ya creaste una API que:

  • Recibe solicitudes HTTP en las rutas / y /items/{item_id}.

  • Ambas rutas toman operaciones GET (también conocidas como métodos HTTP ).

  • La ruta /items/{item_id} tiene un parámetro de ruta item_id de tipo entero (int).

  • La ruta /items/{item_id} tiene un parámetro de consulta opcional q de tipo string (str).

  • Documentos de API interactivos


3. Ahora en http://127.0.0.1:8000/docs. Verá la documentación de la API interactiva automática:



FastAPI en una Pokemon API de Melt

Te dejamos el enlace al repositorio demo y el video con el ejemplo del talk de la semana:

Si existe algún error en el reproductor, puedes ver el video en el siguiente LINK.



Desde su lanzamiento en 2019, FastAPI se ha convertido en uno de los frameworks web de Python más populares, ganando reconocimiento por su facilidad de uso, velocidad y eficiencia en el manejo de grandes volúmenes de datos.


La comunidad de FastAPI continúa creciendo y mejorando el framework con nuevas funcionalidades y contribuciones de desarrolladores de todo el mundo.


 

¡Gracias por leer!


📍 Conéctate con nosotros en instagram👇


Join our newsletter to receive information about latest technologies trends and job offers

Thanks for subscribing!

bottom of page