Recursos externos
Muchos programas modernos necesitan acceder a datos que no están almacenados localmente ni en la propia base de datos de la aplicación. Estos datos pueden provenir de fuentes como las siguientes:
- APIs públicas o privadas.
- Archivos alojados en servidores remotos.
- Servicios en la nube.
- Feeds de información.
El acceso a estos recursos permite que las aplicaciones se mantengan actualizadas, se integren con otros sistemas y consuman información de terceros de manera eficiente.
Tipos de recursos externos
- APIs web (REST/GraphQL): Proporcionan datos estructurados a través de protocolos HTTP. Se consumen normalmente en formato JSON o XML.
- Archivos remotos: CSV, JSON, XML o binarios alojados en servidores web, FTP o servicios cloud.
- Feeds y servicios de streaming: RSS/Atom, streams de datos en tiempo real (por ejemplo, datos de sensores o mensajes de redes sociales).
- Servicios cloud: Bases de datos como servicio, almacenamiento de archivos (S3, Google Cloud Storage), funciones serverless que devuelven datos bajo demanda.
Modelos de interacción
- Petición HTTP/HTTPS: El cliente hace una solicitud a un servidor remoto usando métodos como
GET,POST,PUToDELETE. - Autenticación y autorización: Muchas APIs requieren tokens, claves o mecanismos OAuth para autorizar el acceso.
- Paginación y limitación de datos: Las APIs devuelven datos por bloques para evitar sobrecargar la red o el servidor.
- Parsing de datos: Transformar el contenido recibido (JSON, XML, CSV) en estructuras que la aplicación pueda utilizar.
Buenas prácticas
- Controlar errores y excepciones: manejar respuestas inválidas, fallos de red o códigos de error HTTP.
- Usar timeouts y reintentos con backoff exponencial: para no bloquear la aplicación ante problemas temporales.
- Validar y sanear los datos recibidos: no confiar en datos externos sin comprobación.
- Respetar límites de uso y políticas de la API: muchas APIs tienen restricciones de frecuencia (rate limiting).
- Almacenar temporalmente los datos: caché local para evitar peticiones repetidas y mejorar rendimiento.
Seguridad
- Siempre usar HTTPS para proteger la información en tránsito.
- Nunca incluir claves o tokens directamente en el código; utilizar variables de entorno o gestores de secretos.
- Para datos sensibles, considerar cifrado adicional incluso después de recibirlos.
- Registrar accesos y errores para auditoría y diagnóstico.
Rendimiento y escalabilidad
- Minimizar el número de peticiones y el tamaño de los datos solicitados.
- Consumir solo los campos necesarios mediante filtros o parámetros de selección.
- Procesar datos en streaming si se esperan volúmenes grandes.
- Implementar caché distribuida cuando múltiples usuarios requieren los mismos datos.
Ejemplos conceptuales
Consulta a una API REST de usuarios:
GET https://api.example.com/users?page=1&limit=50
Headers:
Authorization: Bearer <token>
Descarga de un archivo CSV remoto:
- Abrir conexión HTTP al servidor.
- Leer el archivo por bloques (streaming).
- Guardar en disco local.
- Procesar contenido.
- Cerrar conexión.
Actividades prácticas sugeridas
- Identificar y consumir una API pública simple, mostrando los datos en la aplicación.
- Descargar un archivo remoto (JSON o CSV) y procesarlo localmente.
- Implementar un sistema de caché temporal para minimizar el número de llamadas a la API.
- Configurar manejo de errores, timeouts y reintentos ante fallos de red.