Introducción a FastAPI

1

¿Qué es FastAPI? con Sebastián Ramírez @Tiangolo

2

Instalación de FastAPI y creación de tu primera aplicación

3

Documentación automática con Swagger

4

Métodos HTTP en FastAPI

FastAPI Path Operations

5

Método GET en FastAPI

6

Crear parámetros de ruta en FastAPI

7

Parámetros Query en FastAPI

8

Método POST en FastAPI

9

Métodos PUT y DELETE en FastAPI

Validaciones con Pydantic

10

Creación de esquemas con Pydantic

11

Validaciones de tipos de datos con Pydantic

12

Validaciones de parámetros con Pydantic

13

JSONResponse: Tipos de respuestas en FastAPI

14

Códigos de estado HTTP en FastAPI

Autenticación en FastAPI

15

Flujo de autenticación en FastAPI

16

Generando tokens con PyJWT

17

Validando tokens con PyJWT

18

Middlewares de autenticación en FastAPI

Conexión con bases de datos en FastAPI

19

SQLAlchemy: el ORM de FastAPI

20

Instalación y configuración de SQLAlchemy

21

Creación de modelos con SQLAlchemy

22

Registro de datos con SQLAlchemy

23

Consulta de datos con SQLAlchemy

24

Modificación y eliminación de datos con SQLAlchemy

25

SQLModel: el futuro ORM de FastAPI

Modularización

26

Manejo de errores y middlewares en FastAPI

27

Creación de routers en FastAPI

28

Servicios para consultar datos

29

Servicios para registrar y modificar datos

Despliegue de Aplicación en FastAPI

30

Preparando el proyecto para desplegar a producción

31

¿Cómo elegir entre GitHub y GitLab?

32

Crear repositorio en GitLab

33

Crear Droplet en Digital Ocean

34

Instalación de herramientas para el servidor

35

Ejecutando FastAPI con NGINX

Próximos pasos

36

¿Quieres más cursos de FastAPI?

Bonus

37

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

Curso de FastAPI

Curso de FastAPI

Pablo España

Pablo España

Generando tokens con PyJWT

16/37
Recursos

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Es mejor guardar datos sensibles como la secretKey en las variables de entorno, son 3 pasos:

  1. Instalen
pip install python-dotenv
  1. Crean un archivo en la raíz del proyecto con nombre .env y agregan las variables de entorno, en nuestro caso
SECRET_KEY = secretKey

Ahora se accede a las variables de entorno así, en nuestro archivo jwt_manager.py:

import os
from dotenv import load_dotenv
from jwt import encode, decode

load_dotenv()

secretKey = os.getenv("SECRET_KEY")


def create_token(data: dict) -> str:
    token: str = encode(payload=data, key=secretKey, algorithm="HS256")
    return token


def validate_token(token: str) -> dict:
    data: dict = decode(token, key=secretKey, algorithms=["HS256"])
    return data

Hay probabilidades que el flujo de autenticación que se enseña no te funcione (Al menos así me pasó) puesto que actualmente FastAPI está utilizando python-jose para autenticación con JWT. En la propia documentación, explican por qué lo están haciendo así 👉 https://fastapi.tiangolo.com/tutorial/security/oauth2-jwt/#install-python-jose

Más aún, eso no indica que no puedas seguir realizando el flujo de autenticación con PyJWT (también en la documentación te dan el enlace para que lo hagas 🤫)

Entonces para que no te frustres y puedas tener un resultado similar te recomiendo el siguiente video (en inglés)
📽️ https://www.youtube.com/watch?v=0A_GCXBCNUQ&list=PLG5TNJClD2tUTwO-O0OHlr2xdfB2kVCpZ&index=1&pp=gAQBiAQB

O si quieres ver la implementación directamente te sugiero este video hecho por mí con mucho cariño
https://www.youtube.com/watch?v=-NMH8rvVS5I

Hola Equipo de platzi espero que esten bien, Pido por Actualizacion de este curso, Ya que FastAPI ha actualizado algunas funciones. Gracias 💚
Hola a todos!, Yo lo solucione poniendo cambien en : ` payload=data` por {"some": "payload"} Quedaria asi : token: str = encode(**{"some": "payload"}**, key="my\_secrete\_key", algorithm="HS256")
Para el siguiente error: "from jwt import decode ImportError: cannot import name 'decode' from 'jwt' (/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/jwt/\_\_init\_\_.py)" Intenta hacer lo siguiente: import jwt def create\_token(data: dict) -> str: token: str = jwt.encode(payload=data, key="my\_secret\_key", algorithm="HS256") return token def validate\_token(token: str) -> dict: data: dict = jwt.decode(token, key="my\_secret\_key", algorithms=\['HS256']) return data