Saltar al contenido principal

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, PUT o DELETE.
  • 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:

  1. Abrir conexión HTTP al servidor.
  2. Leer el archivo por bloques (streaming).
  3. Guardar en disco local.
  4. Procesar contenido.
  5. 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.