Get started with FastAPI and a Quick Python Types Intro

Updated: May 9

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

In this quick tutorial, we talk about the "type hints" that allow you to declare the type of a variable, and which are necessary to use them with FastAPI.


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 moderno para crear API’s a partir de Python 3.6. Está basado en OpenAPI 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.


FastAPI además, 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 buen desempeño y ligero

  • 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


Así que podemos decir que 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.


_________________________________________________________________________________________


¡Gracias por leer!


📍 Conéctate con nosotros en instagram👇


190 views

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

Thanks for subscribing!