Guía Paso a Paso para Crear una API REST con Flask y SQLAlchemy en Python

Guía Paso a Paso para Crear una API REST con Flask y SQLAlchemy en Python

Tutorial API REST Flask: Crear una API con Python y SQLAlchemy paso a paso

En este tutorial API REST Flask, aprenderás cómo construir una API RESTful completa utilizando Python, Flask y SQLAlchemy. Este recurso está pensado para desarrolladores principiantes e intermedios que desean iniciarse en el desarrollo backend con Flask desde cero, incluyendo la configuración del entorno, creación de modelos, definición de rutas para operaciones CRUD, validación de datos y pruebas básicas.


Introducción

El desarrollo backend Flask es especialmente popular gracias a la sencillez y flexibilidad del framework junto con SQLAlchemy, una potente herramienta de administración de bases de datos basada en ORM (Object-Relational Mapping). Al finalizar este tutorial, tendrás una API que puede crear, leer, actualizar y eliminar recursos almacenados en una base de datos SQLite.


1. Configuración del Entorno de Desarrollo

Antes de empezar, asegúrate de tener instalado Python 3.6 o superior. Vamos a crear un entorno virtual para mantener las dependencias aisladas.

Paso 1. Crear y activar entorno virtual

En tu terminal ejecuta:

Paso 2. Instalar dependencias

Instalamos Flask, SQLAlchemy y Flask-Marshmallow para manejo y validación de datos:

Además, instalaremos pytest para las pruebas básicas:


2. Creación del Proyecto y Estructura Básica

Vamos a crear un archivo principal para nuestro proyecto llamado app.py.

Tu estructura inicial debería ser:

Guarda las dependencias con:


3. Creación de Modelos SQLAlchemy

SQLAlchemy permite definir modelos que representan las tablas de la base de datos.

Paso 1. Configurar Flask y SQLAlchemy en app.py

Paso 2. Crear un modelo ejemplo: User

Paso 3. Crear esquema para serialización y validación

Paso 4. Crear base de datos

Ejecuta el siguiente comando para crear la base SQLite:

Luego inicia tu aplicación con:

La base database.db se creará automáticamente.


4. Definición de Rutas RESTful para Operaciones CRUD

Vamos a crear las seis rutas principales para gestionar usuarios:

  • Obtener todos los usuarios (GET /users)
  • Obtener un usuario por id (GET /users/)
  • Crear un nuevo usuario (POST /users)
  • Actualizar un usuario existente (PUT /users/)
  • Eliminar un usuario (DELETE /users/)

Paso 1. Importar módulos necesarios

Paso 2. Definir ruta para obtener todos los usuarios

Paso 3. Definir ruta para obtener usuario por ID

Paso 4. Ruta para crear nuevo usuario

Paso 5. Ruta para actualizar usuario

Paso 6. Ruta para eliminar usuario


5. Manejo de Solicitudes y Respuestas JSON

En las rutas anteriores utilizamos request.get_json() para extraer datos en formato JSON enviados por el cliente. También respondemos con jsonify() para devolver respuestas JSON adecuadas con sus códigos HTTP correspondientes (200, 201, 400, 404, 422).

Es importante siempre validar que la solicitud contenga datos y que estén en el formato correcto, para evitar errores inesperados.


6. Validación de Datos

Utilizamos Marshmallow para:

  • Validar que los campos name y email sean obligatorios.
  • Verificar que email tenga un formato válido.

Por ejemplo, en la creación de usuarios manejamos excepciones al cargar el esquema para capturar errores de validación y enviar respuestas útiles al cliente.


7. Pruebas Básicas

Finalmente, hagamos pruebas simples con pytest para validar que nuestra API responde correctamente.

Crear archivo test_app.py

Ejecutar las pruebas

En la terminal:

Verás que las pruebas confirman el correcto funcionamiento básico de la API.


Conclusión y Buenas Prácticas

En este tutorial Flask para principiantes, has aprendido a crear una API RESTful usando Flask y SQLAlchemy, desde configurar el entorno hasta realizar operaciones CRUD y validar datos. Esta base es ideal para ampliar funcionalidades e integrar autenticación o bases de datos más robustas.

Buenas prácticas a considerar

  • Siempre validar y sanitizar la entrada de datos.
  • Manejar errores con respuestas claras y códigos HTTP adecuados.
  • Usar esquemas y serializers (como Marshmallow) para mantener consistencia.
  • Separar el código en módulos para facilitar mantenimiento a medida crece el proyecto.
  • Escribir pruebas unitarias y funcionales para asegurar calidad.

Próximos pasos recomendados

  • Implementar autenticación (ej. JWT) para proteger las rutas.
  • Utilizar Base de datos PostgreSQL o MySQL para producción.
  • Documentar la API con Swagger o similar.

¡Anímate a seguir explorando y desarrollando tu experiencia en desarrollo backend Flask!


¿Te ha gustado este tutorial?

Comparte y comenta tu experiencia. Si necesitas ayuda o quieres un tema avanzado, ¡no dudes en preguntar!


Código completo app.py para referencia


Recuerda: Para más tutoriales API REST Flask, seguir prácticas recomendadas y profundizar en Python backend, ¡mantente atento a nuestras guías actualizadas!