Cómo Construir una API RESTful Segura con Django y Python Paso a Paso

Cómo Construir una API RESTful Segura con Django y Python Paso a Paso

Tutorial Django: Crea una API RESTful segura con Python y JWT

En este tutorial detallado, aprenderás a construir una API RESTful segura utilizando Django y Python. Está diseñado para desarrolladores principiantes e intermedios que desean dominar la creación de APIs robustas, con autenticación basada en tokens JWT para garantizar seguridad.

¿Qué aprenderás?

  • Instalación y configuración de Django y Django REST Framework
  • Creación de modelos y serializadores
  • Implementación de vistas basadas en clases para operaciones CRUD
  • Autenticación y autorización usando tokens JWT
  • Pruebas básicas para la API

Este enfoque educativo, paso a paso y con buenas prácticas, te permitirá un aprendizaje sólido y práctico en desarrollo backend seguro.


Índice

  1. Instalación y configuración inicial
  2. Creación del modelo y serializador
  3. Implementación de vistas CRUD con vistas basadas en clases
  4. Configuración de autenticación JWT
  5. Pruebas básicas de la API
  6. Conclusión y buenas prácticas

Instalación y configuración inicial

Paso 1: Crear un entorno virtual

Es recomendable usar un entorno virtual para evitar conflictos con paquetes del sistema.

Paso 2: Instalar Django y Django REST Framework

Usaremos pip para instalar las dependencias necesarias.

  • django: framework web
  • djangorestframework: extensión para crear APIs RESTful
  • djangorestframework-simplejwt: para autenticación JWT

Paso 3: Crear un proyecto Django

Paso 4: Crear una aplicación dentro del proyecto

Paso 5: Configuración básica

Edita myapi/settings.py para lo siguiente:

  1. Añade 'rest_framework' y 'core' a INSTALLED_APPS:

  1. Configura DRF para usar JWT por defecto (agregamos al final de settings.py):

Paso 6: Migrar base de datos y crear superusuario

Con esto tienes tu proyecto base listo para continuar.


Creación del modelo y serializador

Para comenzar, vamos a crear un ejemplo sencillo: un modelo para administrar Artículos.

Definir modelo Article

En core/models.py:

Migrar modelo

Ejecuta:

Crear serializador

Los serializadores convierten instancias de modelos a JSON y viceversa.

En core/serializers.py:

Esto manejará la validación y conversión automática.


Implementación de vistas CRUD con vistas basadas en clases

Para las operaciones CRUD usaremos las vistas genéricas que ofrece DRF.

Crear vistas en core/views.py

  • ListCreateAPIView: lista y crea artículos
  • RetrieveUpdateDestroyAPIView: detalle, actualiza y borra artículo

Configurar URLs

Crea core/urls.py:

Luego enlaza en myapi/urls.py:

Con esto, tu API tiene ahora endpoints para manejar CRUD de artículos, pero solo para usuarios autenticados.


Configuración de autenticación JWT

Vamos a permitir que usuarios obtengan tokens JWT para autenticarse.

Añadir URLs para autenticación JWT

Edita myapi/urls.py para incluir rutas de token:

Cómo funciona

  • POST /api/token/: Recibe username y password y devuelve access y refresh tokens.
  • POST /api/token/refresh/: Recibe token refresh y devuelve un nuevo access token.

Probar autenticación vía la terminal (curl)

Supón que creaste un superusuario con usuario admin y contraseña adminpassword.

Respuesta JSON:

Usar token para acceder a las rutas protegidas

Ejemplo para obtener lista de artículos:

O usando herramientas como Postman puedes agregar el token JWT en el header Authorization.


Pruebas básicas de la API

Usar Postman o Insomnia

  1. Autentícate para obtener tokens JWT
  2. Utiliza el token access para llamar rutas
  3. Intenta:
    • Crear un artículo (POST /api/articles/)
    • Listar artículos (GET /api/articles/)
    • Modificar (PUT /api/articles/{id}/)
    • Eliminar (DELETE /api/articles/{id}/)

Ejemplo de prueba con Python requests

Este código prueba la autenticación y la creación de un recurso en la API.


Conclusión y buenas prácticas

En este tutorial, has creado una API RESTful segura que incluye el flujo completo desde la instalación de Django hasta la protección con JWT:

  • Instalaste y configuraste Django y Django REST Framework
  • Diseñaste un modelo y su serializador para intercambio JSON
  • Implementaste vistas basadas en clases para las operaciones CRUD
  • Configuraste autenticación y autorización mediante tokens JWT
  • Realizaste pruebas básicas para asegurarte de que el API responde como se espera

Buenas prácticas recomendadas

  • Protege siempre tus endpoints con autenticación adecuada
  • Usa entornos virtuales para aislar dependencias
  • Separa lógica y capas (modelos, vistas, serializers)
  • Maneja errores y valida datos con los serializadores
  • Limita la vida de tus tokens JWT y permite refresco seguro
  • Documenta tu API para facilitar mantenimiento

Próximos pasos

  • Añadir paginación y filtros a tus vistas
  • Documentar con Swagger o Redoc
  • Implementar roles y permisos más detallados
  • Desplegar la API usando Docker o servicios cloud

¡No dejes de practicar y mejorar tu API! Comparte tu proyecto, colabora y sigue aprendiendo sobre desarrollo backend seguro con Django.


¿Listo para crear APIs seguras y potentes? ¡Empieza hoy mismo con Django y convierte tu proyecto en una solución robusta y escalable!