📚 SABER - Dimensión Conceptual
Objetivo: Identificar el proceso de desarrollo de programación de aplicaciones (API)
🎯 1. ¿Qué es una API?
Definición Simple
Una API (Application Programming Interface) es como un "mesero en un restaurante":
- Tú (Cliente): Haces un pedido (solicitud)
- El Mesero (API): Lleva tu pedido a la cocina
- La Cocina (Servidor/Base de datos): Prepara tu pedido
- El Mesero (API): Te trae tu comida (respuesta)
Definición Técnica
Una API es un conjunto de reglas y protocolos que permite que diferentes aplicaciones se comuniquen entre sí. Actúa como intermediario que:
- Recibe peticiones de clientes (navegadores, apps móviles, otras aplicaciones)
- Procesa esas peticiones
- Consulta o modifica datos en una base de datos
- Devuelve respuestas en formato estandarizado (generalmente JSON)
- La app NO tiene toda la información del clima
- La app hace una solicitud a la API de un servicio meteorológico
- La API consulta sus servidores y bases de datos
- La API devuelve los datos del clima en formato JSON
- Tu app muestra esa información de manera bonita
🔧 2. Tipos de APIs
REST API
La más común y la que usaremos
- Usa HTTP/HTTPS
- Sin estado (stateless)
- Formato JSON
- Fácil de usar
SOAP API
Más antigua y compleja
- Usa XML
- Más segura
- Más rígida
- Usada en banca
GraphQL
Moderna y flexible
- Consultas personalizadas
- Un solo endpoint
- Creada por Facebook
- Más compleja
WebSocket
Para tiempo real
- Conexión bidireccional
- Comunicación en vivo
- Chats, juegos
- Notificaciones
🌐 3. REST API - Conceptos Fundamentales
3.1 Métodos HTTP (Verbos)
Son las "acciones" que puedes realizar con una API:
| Método | Acción | Ejemplo URL | Resultado |
|---|---|---|---|
| GET | Leer/Obtener | GET /api/libros/ | Lista todos los libros |
| GET | Leer uno | GET /api/libros/5/ | Muestra el libro con ID 5 |
| POST | Crear | POST /api/libros/ | Crea un nuevo libro |
| PUT | Actualizar | PUT /api/libros/5/ | Actualiza el libro ID 5 |
| DELETE | Eliminar | DELETE /api/libros/5/ | Elimina el libro ID 5 |
3.2 Códigos de Estado HTTP
Las APIs responden con códigos que indican el resultado de la operación:
| Código | Significado | Cuándo se usa |
|---|---|---|
| 200 OK | Éxito | La petición fue exitosa |
| 201 Created | Creado | Se creó un nuevo recurso |
| 204 No Content | Sin contenido | Éxito pero sin datos que devolver |
| 400 Bad Request | Petición incorrecta | Datos enviados son inválidos |
| 401 Unauthorized | No autorizado | Falta autenticación |
| 403 Forbidden | Prohibido | No tienes permisos |
| 404 Not Found | No encontrado | El recurso no existe |
| 500 Internal Server Error | Error del servidor | Algo falló en el servidor |
3.3 Formato JSON
Las APIs REST modernas usan JSON (JavaScript Object Notation) para enviar y recibir datos:
🏗️ 4. Arquitectura de una Aplicación Web con API
Componentes Principales
Una aplicación web moderna orientada a servicios tiene estas capas:
-
Frontend (Cliente)
La interfaz que ve el usuario (HTML, CSS, JavaScript)
- Navegador web
- Aplicación móvil
- Aplicación de escritorio
-
API (Intermediario)
El mesero que conecta el frontend con el backend (Django REST Framework)
- Recibe peticiones HTTP
- Valida datos
- Procesa lógica de negocio
- Devuelve respuestas JSON
-
Backend (Servidor)
La lógica de la aplicación (Django + Python)
- Modelos de datos
- Reglas de negocio
- Autenticación y seguridad
-
Base de Datos
Donde se almacenan los datos (MySQL)
- Tablas y relaciones
- Persistencia de información
- Usuario hace clic en "Ver libros" en el navegador
- JavaScript envía petición GET a
http://localhost:8000/api/libros/ - Django recibe la petición en su API
- Django consulta la base de datos MySQL
- MySQL devuelve los registros de libros
- Django convierte los datos a formato JSON
- La API envía la respuesta JSON al navegador
- JavaScript procesa el JSON y muestra los libros en HTML
⚙️ SABER HACER - Dimensión Actuacional
Objetivo: Desarrollar interfaces de programación de aplicaciones (API)
🛠️ 5. Desarrollo de API con Django REST Framework
5.1 ¿Por qué Django REST Framework?
Django REST Framework (DRF) es una biblioteca poderosa y flexible para construir APIs web con Django.
Ventajas:
- ✅ Fácil de aprender y usar
- ✅ Documentación excelente
- ✅ Interfaz web navegable (puedes probar tu API desde el navegador)
- ✅ Autenticación y permisos incorporados
- ✅ Serialización automática de datos
- ✅ Compatible con cualquier base de datos (MySQL, PostgreSQL, SQLite)
5.2 Componentes de Django REST Framework
1️⃣ Serializadores (Serializers)
Convierten objetos de Python/Django en JSON y viceversa
2️⃣ Vistas (Views/ViewSets)
Manejan las peticiones HTTP y devuelven respuestas
3️⃣ URLs (Rutas)
Definen qué vista se ejecuta para cada URL
5.3 ViewSets - Forma Avanzada
DRF ofrece ViewSets que simplifican aún más el código:
🔗 6. Consumiendo la API desde el Frontend
6.1 Con JavaScript Fetch API
6.2 Con Axios (Alternativa más moderna)
🔒 7. Seguridad en APIs
7.1 CORS (Cross-Origin Resource Sharing)
Es una medida de seguridad del navegador que evita que sitios web maliciosos accedan a tu API.
En nuestra práctica, necesitamos configurar CORS porque el frontend y backend corren en diferentes puertos.
7.2 Autenticación
DRF ofrece varios métodos de autenticación:
📊 8. Paginación y Filtros
8.1 Paginación
Cuando tienes muchos datos, es mejor enviarlos en páginas:
8.2 Filtros y Búsqueda
/api/libros/?autor=García Márquez- Filtrar por autor/api/libros/?disponible=true- Solo disponibles/api/libros/?search=quijote- Buscar "quijote"/api/libros/?ordering=-precio- Ordenar por precio descendente/api/libros/?search=python&disponible=true&ordering=titulo- Combinar filtros
🧪 9. Probando la API
9.1 Navegador Web
Simplemente visita las URLs en tu navegador:
http://localhost:8000/api/libros/- Verás una interfaz bonita donde puedes:
- Ver los datos en formato JSON
- Crear nuevos registros con formularios
- Editar y eliminar desde el navegador
9.2 Postman o Insomnia
Herramientas profesionales para probar APIs:
- Descargar Postman: postman.com
- Crear una nueva petición
- Seleccionar método (GET, POST, PUT, DELETE)
- Ingresar URL:
http://localhost:8000/api/libros/ - Para POST/PUT, agregar JSON en el Body
- Enviar y ver la respuesta
9.3 Con cURL (Línea de comandos)
🤝 SABER SER-CONVIVIR - Dimensión Socioafectiva
Competencias profesionales y trabajo en equipo
💼 10. Buenas Prácticas en el Desarrollo de APIs
10.1 Nomenclatura y Estructura
✅ URLs RESTful correctas
- Usa sustantivos en plural:
/api/libros/no/api/libro/ - Usa guiones, no guiones bajos:
/api/libros-populares/ - Minúsculas siempre:
/api/libros/no/api/Libros/ - Sin verbos en las URLs:
POST /api/libros/no/api/crear-libro/
✅ Versionado de APIs
Las APIs evolucionan, usa versiones para no romper aplicaciones existentes:
/api/v1/libros/- Versión 1/api/v2/libros/- Versión 2 (cuando haces cambios importantes)
10.2 Manejo de Errores
10.3 Documentación
Usa herramientas como Swagger/OpenAPI para generar documentación automática:
10.4 Testing
Las APIs profesionales tienen pruebas automatizadas:
👥 11. Trabajo en Equipo y Comunicación
Roles en un equipo de desarrollo con APIs
- Backend Developer: Desarrolla la API y la lógica del servidor
- Frontend Developer: Consume la API y crea la interfaz de usuario
- DevOps: Despliega y mantiene la infraestructura
- QA Tester: Prueba la API y reporta bugs
- 📝 Documenta cada endpoint de tu API
- 💬 Comunica cambios en la API al equipo frontend
- 🐛 Reporta errores de manera clara y con ejemplos
- 🤝 Colabora en la definición de contratos de API
- 📊 Usa herramientas como Postman Collections para compartir ejemplos
🎓 12. Resumen y Próximos Pasos
Has aprendido:
- ✅ Qué es una API y por qué es importante
- ✅ Diferencias entre REST, SOAP, GraphQL y WebSocket
- ✅ Métodos HTTP (GET, POST, PUT, DELETE)
- ✅ Códigos de estado HTTP
- ✅ Formato JSON
- ✅ Arquitectura de aplicaciones orientadas a servicios
- ✅ Django REST Framework y sus componentes
- ✅ Serializers, Views, ViewSets y URLs
- ✅ Cómo consumir APIs desde JavaScript
- ✅ Seguridad (CORS, Autenticación)
- ✅ Paginación y filtros
- ✅ Testing y documentación
- ✅ Buenas prácticas profesionales
- Practica creando APIs para diferentes dominios (tareas, usuarios, productos)
- Aprende sobre autenticación JWT (JSON Web Tokens)
- Explora WebSockets para comunicación en tiempo real
- Estudia GraphQL como alternativa a REST
- Aprende sobre microservicios y arquitecturas distribuidas
- Practica con bases de datos NoSQL (MongoDB)
- Implementa caching con Redis
- Aprende sobre Docker y contenedores
- Estudia CI/CD para despliegues automatizados
- Una buena API es intuitiva y fácil de usar
- La documentación es tan importante como el código
- Siempre valida los datos de entrada
- Implementa manejo de errores robusto
- Piensa en la escalabilidad desde el inicio
- La seguridad no es opcional
📚 Recursos Adicionales
| Recurso | Descripción | URL |
|---|---|---|
| Django REST Framework | Documentación oficial | django-rest-framework.org |
| MDN Web Docs | Referencia de HTTP y APIs | developer.mozilla.org |
| Postman Learning | Tutoriales de APIs | learning.postman.com |
| REST API Tutorial | Guía completa de REST | restfulapi.net |
| Real Python | Tutoriales de Django y DRF | realpython.com |