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 se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
10 Hrs
35 Min
17 Seg
Curso de FastAPI

Curso de FastAPI

Pablo España

Pablo España

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

2/37
Recursos
Transcripción

Aportes 23

Preguntas 3

Ordenar por:

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

**Configuración de un servidor con FastAPI** **Creación de un entorno virtual (venv):** Se creó un entorno virtual utilizando `venv`. Un entorno virtual es un ambiente aislado que permite instalar y gestionar paquetes de Python específicos para un proyecto, sin afectar al sistema global. `python -m venv nombre_del_entorno` **Activación del entorno virtual:** Se activó el entorno virtual para asegurar que las dependencias se instalen y se ejecuten dentro de este entorno aislado. `source nombre_del_entorno/bin/activate # En sistemas basados en Unix` **Instalación de Uvicorn:** Uvicorn es un servidor ASGI (Asynchronous Server Gateway Interface) que se utiliza para ejecutar aplicaciones FastAPI de manera asincrónica. Se instaló Uvicorn dentro del entorno virtual. `pip install uvicorn` **Desarrollo de una aplicación FastAPI simple:** Se creó un archivo Python con un código mínimo de FastAPI. El código define una instancia de la clase `FastAPI` y una ruta (`/`) que responde con un mensaje "Hello world!" cuando se realiza una solicitud GET. ```python from fastapi import FastAPI app = FastAPI() @app.get('/') def message(): return"Hello world🔥💬" ```**Ejecución de la aplicación con Uvicorn:** Se utilizó el servidor Uvicorn para ejecutar la aplicación FastAPI. La aplicación se configuró para escuchar en todas las interfaces (`0.0.0.0`) y en un puerto específico. `uvicorn nombre_del_archivo:app --reload --host 0.0.0.0 --port 8000` * `nombre_del_archivo` es el nombre del archivo Python que contiene la aplicación FastAPI. * `--reload` habilita la recarga automática de la aplicación cuando se realizan cambios en el código. * `--host 0.0.0.0` permite que la aplicación sea accesible desde cualquier dirección IP en la red. * `--port 8000` especifica el puerto en el que la aplicación escuchará las solicitudes.

Desde mi celular:
.

Que tal, si lo quieren correr en contenedor les comparto mi codigo Dockerfile `# Debain 12` `FROM python:3.9` `RUN mkdir python` `WORKDIR /home/python` `RUN apt-get install -y tzdata ` `RUN pip install fastapi[all]` `RUN pip install --upgrade pip` `RUN apt-get -y update` `EXPOSE 8000CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", ` Quick Start `docker build . -t python` `docker run --rm --name=Python -p 8000:8000 -v $(pwd):"/home/python" python` \--rm para borrar el contendor al detenerse -p para exponer el puerto -v hacer un bind y conectar la carpeta con el contenedor (esto es para que se vean los cambios que haces en el archivo main.py sin tener volver a ahcr build a la imagen) todo con la finalidad de poder exportar lo que hagas a otros ambientes y no instalar cosas en local recomendado este curso para ahondar mas en contenedores <https://platzi.com/cursos/docker/>

si quieres saber la ip de su pc usando codigo con python:

resultado:

a modo de recordatorio, Python se ejecuta dentro de un entorno por defecto llamado base, es una buena practica al desarrollar o hacer pruebas el crear entornos virtuales adicionales que nos permitan manejar paquetes (fastapi, uvicorn, etc.) encapsulados dentro de dichos entornos. Beneficios: Permite evitar cargar nuestro entorno base con paquetes que no necesitamos siempre. Utilizar diferentes versiones de un mismo paquete en diferentes entornos. Evitar algún tipo de colision entre paquetes.
Seguí la clase usando una Raspberry Pi y todo me funcionó muy bien. Ahora tengo un pequeño servidor web en mi Raspberry con menos de 5 líneas de código, estoy muy intrigado de lo que se puede lograr! ![](https://static.platzi.com/media/user_upload/imagen-69ff30a2-2b95-4b91-a572-33cb56a8c7fa.jpg)
Seguí la clase usando una Raspberry Pi y todo funcionó sin problema. Ahora tengo un servidor web en mi Raspberry en menos de 6 líneas de código. Estoy muy contento y curioso por lo que se puede lograr con fastapi. ![](https://static.platzi.com/media/user_upload/imagen-d034899f-cba8-48b1-876d-71f02083aa7a.jpg)
Usar entornos virtuales es una excelente práctica por estas razones: * **Aislamiento de Dependencias:** Previene conflictos entre versiones de bibliotecas y paquetes en diferentes proyectos. * **Evitar Problemas de Versionamiento:** Permite especificar versiones precisas de dependencias para cada proyecto. * **Portabilidad:** Facilita la replicación consistente del entorno de desarrollo en diferentes máquinas. * **Facilita la Actualización:** Permite probar nuevas versiones de dependencias sin afectar otros proyectos. * **Mejora la Limpieza y Mantenimiento:** Facilita la eliminación de un proyecto y sus dependencias sin afectar otros proyectos. * **Conformidad con Requisitos del Proyecto:** Garantiza que todos los desarrolladores en un proyecto tengan las mismas versiones de dependencias.
¿Que está pasando acá? Empieza con la instalación y no explica nada de que se trata la herramienta y el porqué hacemos lo que hacemos. ¿Qué sentido tiene el curso si no explicas nada y solo das una "formula"? Especialmente si llamas a su creador!
La convención de nombrar el entorno virtual como `venv` se debe a que es un término estándar en Python que significa "virtual environment". Esta nomenclatura permite identificar fácilmente que se trata de un entorno virtual, independientemente del proyecto específico. Usar un nombre genérico como `venv` facilita la consistencia en los proyectos y evita confusiones si se cambian o se manejan múltiples entornos. Sin embargo, también puedes nombrar el entorno como prefieras, como relacionado con el proyecto, para mayor claridad si trabajas en situaciones específicas.
`--reload` para que el servidor detecte cambios y realice un refresh de la página y muestre lo nuevo agregado. `--port XXXX` nos sive para determinar qué puerto necesitamos utilizar si quisiéramos uno diferente al default (8000), cambiando las XXXX por el numero de puerto.
Vaya que aprendi sobre estos sistemas de conexion tanto con la red como con la conexion a otros dispositivos. Es algo que me gusto. Espero seguir aprendiendo mas
Les recomiendo leer el siguiente artículo antes de iniciar el curso: [FastAPI vs Django vs Flask](https://www.linkedin.com/pulse/fastapi-vs-django-flask-germ%C3%A1n-salina-ccmgf/?trackingId=xFO+D1im3HDFakdN1WHong==)
Funcionando en local y en los dispositivos de la red! ![](https://static.platzi.com/media/user_upload/Captura%20desde%202024-06-15%2011-39-45-d27e82eb-a94c-442d-befc-d57be5b55cb7.jpg) ![](https://static.platzi.com/media/user_upload/Screenshot_2024-06-15-11-57-26-646_com.android.chrome-eb39f585-c064-4676-adb2-6b4b8ca9945d.jpg)
Sería genial si dentro de los recursos están los comandos para los otros sistemas operativos
seria bueno poder tener un curso de como usar poetry
Tengo este script para que puedan crear el entorno virtual de python de manera mas rapida, para usuarios de linux y para usuarios de windows que usen wsl Primero em el archivo `.bashrc` o `.zshrc` deben de poner lo siguiente. ```sh \# creatre by: jakepys \<https://github.com/JuanPerdomo00> function venvpy() { echo -e "\[\*] Creando entorno virtual" python3.12 -m venv venv ~/$('pwd') activepy clear echo "\[\*] Todo listo" ``` Importante en la zona donde estan los alias de los comandos agregar esta linea. ```sh alias activepy='source $(pwd)/venv/bin/activate' ``` despues de esto hacen un `source ~/.zshrc` o `source ~/.bashrc` y deberian crear el entorno virtual con el comando `venvpy` y se activa automaticamente.
crear un entorno virtual es mucho mas facil con pipenv
Ejecutar este comando en caso de no correr el entorno virtual: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
hola muy bueno el video pero la parte para ver en otro pc o movil no funciona

para saber la ip de su computadora (en Linux), usen el comando:

ip address show

y les devolvera las conexiones de su pc. La que les intersa es la wlp2s0 inet:. Con esa IP y el puerto expuesto, podran hacer el ejercicio. ejecutando el comando ya visto en la clase

uvicorn main:app --reload \
--port 5000 \
--host 0.0.0.0
Buen día, para los que usamos **WSL** debemos realizar estos pasos <https://platzi.com/comunidad/acceder-a-un-servidor-local-hosteado-en-wsl-20-por-medio-de-dispositivos-de-la-misma-red-local/> Espero les sea de ayuda!!!
es el primer curso , para instalar pero no dices en que sistema operativo o algo de referencia, te vas directamente a la accion, minimo explica el contexto del inicio del proyectito.