APIs, el pegamento digital que no sabías que necesitabas, si has estado en el mundo del desarrollo de software (o incluso si solo has escuchado a tus amigos techies charlar), el término API aparece más que un «hola» en una reunión de Scrum. Pero, ¿qué es exactamente una API? ¿Por qué todo el mundo está hablando de ellas? ¿Y cómo se utilizan sin acabar llorando en un rincón?
Hoy, después de pasar más de 5 horas escribiendo esto (y tratando de arreglar mi propio código mal documentado), te lo voy a explicar de manera sencilla.
(Spoiler: Si esperabas una comparación de «una API es como un mesero en un restaurante», lamento decepcionarte. Esa ya la han usado hasta el cansancio.)
¿Qué es una API? (Definición técnica y no tan técnica)
- Definición formal: Una API (Interfaz de Programación de Aplicaciones, en español) es un conjunto de reglas, protocolos y herramientas que proporciona la posibilidad de que diferentes sistemas se hagan requerimientos entre sí. En palabras simples se asemeja a un contrato que firman quienes solicitan datos (el cliente) y quienes los proporcionan (el servidor).
- Definición informal: Imagina que es como un «menú de acciones» que un servicio (como Twitter, Google Maps o tu banco) proporciona con el fin de que otras aplicaciones puedan interactuar con él sin la necesidad de hacer un hackeo
¿Cómo funciona una API? (Flujo básico)
Imagina esto:
- Tú (cliente) → «Hola, API de Clima, ¿me puedes dar el pronóstico para Madrid?»
- La API → «Déjame revisar… ¡Aquí está! { ‘temp’: 22°C, ‘humidity’: 69% }»
- Tú → «¡Genial! Ahora puedo avisar a mi app que hará calor y que lo mejor es quedarme en casa.»
En código, eso se vería así (ejemplo en JavaScript usando fetch):
Si no entendiste el código, no te preocupes, lo importante es el concepto.
Tipos de API (REST, SOAP, GraphQL, etc.).
No todas las API son iguales y aquí te contaremos de las más famosas:
REST (Representational State Transfer): Usa HTTP (GET, POST, PUT o DELETE) y devuelve datos en JSON (aunque a veces en XML). Ejemplos: API de Twitter, API de GitHub.
SOAP (Simple Object Access Protocol): Es más antiguo y un poco más pesado a la hora de usar porque trabaja con XML. Es la favorita de las grandes corporaciones (y de quienes disfrutan del sufrimiento).
GraphQL: Te da la flexibilidad de pedir exactamente las cosas que necesitas (ni más ni menos). Lo utilizan Facebook, Shopify, etc.
A título personal, yo me quedo con REST por su simplicidad, pero no seré quien imponga mis preferencias.
Cómo usar una API (Paso a paso)
- Paso 1. Accede
- Hay ciertas API’s que son públicas (ej. OpenWeatherMap).
- Otras exigen la API Key (como la contraseña).
- Y las más insufribles, piden OAuth (ugh).
- Paso 2. Lee la docu (de verdad)
- Endpoints (los URLs a los que hay que llamar).
- Parámetros (qué datos hay que enviar).
- Formatos de respuesta (JSON, XML).
- Este el momento en el que un 80% de los devs se confunden y después preguntan en Stack Overflow.
- Paso 3. Crear una llamada
- Código de ejemplo en Python con requests:
- Paso 4. Respuesta la llamada
- Extraer los datos.
- Manejo de errores (¿y si falla la API?).
Errores frecuentes (y su forma de evitarlos).
- No considerar errores HTTP.
- ¿Qué pasa si el servidor devuelve un 404 o un 500? Tu aplicación debería estar lista para ello.
- Olvidar límites de rate-limiting.
- Hay muchas APIs que te bloquearán si haces demasiadas peticiones.
- Hardcodear el API Key.
- NUNCA subas esto a GitHub. Utiliza variables de entorno.
- Asumir que la respuesta es siempre la misma.
- Las APIs cambian. Siempre valida la estructura de los datos.
Conclusión
Las APIs son extremadamente potentes, pero como se dice: «Con gran poder, viene una gran responsabilidad», si has comprendido esto, en parte lo estás haciendo mejor que el 60% de los juniors que piensan que una API es simplemente copiar y pegar URLs.
Breve recapitulación:
- API es interfaz para comunicar sistemas.
- REST es el más común (hay otros).
- No dejes de leer la bendita documentación.
- Maneja errores como si tu app dependiera de ello (que en realidad depende).
¿Claro? Si no, coméntame (o búscame por mi LinkedIn, aunque no prometo respuesta rápida).