Qué es una API y el formato JSON, con ejemplos
Cómo se comunican los programas entre sí: peticiones HTTP, respuestas en JSON y tu primera llamada con fetch.
Cuando una app del tiempo te muestra la previsión, no ha calculado nada: le ha preguntado a un servidor y ha mostrado la respuesta. Esa forma de comunicarse entre programas es una API (interfaz de programación de aplicaciones): un conjunto de reglas que dice qué puedes pedir, cómo pedirlo y qué te van a devolver. La mayoría de APIs web responden en JSON, un formato de texto sencillo para datos.
Cómo funciona una petición
Las APIs web usan el mismo protocolo que tu navegador, HTTP. Cada petición tiene:
- Una URL (el endpoint), por ejemplo
https://api.ejemplo.com/v1/ciudades/madrid. - Un método que indica la intención:
GET(leer),POST(crear),PUToPATCH(modificar) yDELETE(borrar). - Cabeceras: información extra, como el formato que aceptas o tu clave de acceso.
- A veces un cuerpo con los datos que envías (en
POSToPUT).
El servidor contesta con un código de estado y, normalmente, un cuerpo en JSON:
| Código | Significado |
|---|---|
| 200 | Todo bien |
| 201 | Creado |
| 400 | La petición está mal formada |
| 401 / 403 | Falta autenticación o no tienes permiso |
| 404 | No existe |
| 429 | Demasiadas peticiones: espera antes de repetir |
| 500 | Error del servidor |
El formato JSON
JSON (JavaScript Object Notation) representa datos con muy pocas reglas: objetos entre llaves con pares "clave": valor, listas entre corchetes, textos entre comillas dobles, números, true, false y null.
{
"ciudad": "Madrid",
"temperatura": 18.5,
"lluvia": false,
"proximos_dias": [
{ "dia": "lunes", "max": 21 },
{ "dia": "martes", "max": 19 }
]
}
Errores que lo invalidan: comillas simples, una coma después del último elemento o comentarios (JSON no admite comentarios). Para revisar un JSON y ver dónde falla puedes usar nuestra herramienta de Base64, URL y JSON, que lo formatea en tu navegador sin enviarlo a ningún sitio.
Pedir datos desde JavaScript con fetch
En el navegador, fetch hace la petición y devuelve una promesa; con await esperas la respuesta sin bloquear la página:
async function cargarUsuario() {
const respuesta = await fetch("https://api.github.com/users/octocat");
if (!respuesta.ok) {
throw new Error(`Error ${respuesta.status}`);
}
const datos = await respuesta.json(); // convierte el JSON en un objeto
console.log(datos.name, datos.public_repos);
}
cargarUsuario();
Pruébalo en la consola del navegador (F12). Comprueba siempre respuesta.ok: fetch no da error con un 404 o un 500, solo cuando falla la conexión. Si la petición desde tu web a otro dominio se bloquea con un error de CORS, es el servidor de la API quien decide si permite que otras webs lo llamen; desde tu código del navegador no se puede saltar.
Lo mismo desde Python
Python trae el módulo json y urllib para hacer peticiones sin instalar nada:
import json
import urllib.request
with urllib.request.urlopen("https://api.github.com/users/octocat") as r:
datos = json.loads(r.read())
print(datos["name"], datos["public_repos"])
En proyectos reales se suele usar la biblioteca requests (se instala con pip, mejor dentro de un entorno virtual).
Claves de API y buenas prácticas
Muchas APIs piden una clave para saber quién llama y cobrar o limitar el uso. Trátala como una contraseña:
- No la escribas en el código ni la subas a GitHub: guárdala en una variable de entorno o en un archivo
.envincluido en.gitignore. - Nunca la pongas en el JavaScript de una web pública: cualquiera puede verla con F12. Las llamadas con clave deben hacerse desde un servidor.
- Respeta los límites: si recibes un 429, espera y reintenta más tarde.
- Lee la documentación de la API: indica los endpoints, los parámetros y el formato exacto de las respuestas.
Con esto ya puedes conectar tu código con servicios de todo tipo, incluidas las APIs de inteligencia artificial.
Fuentes consultadas
- Trabajar con JSON (MDN Web Docs (Mozilla))
- Uso de Fetch (MDN Web Docs (Mozilla))
- Introducción a JSON (JSON.org)
