Programación

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.

Una API web funciona con peticiones y respuestas HTTP.Tu programa pide: GET /ciudades/madrid → El servidor responde 200 → Datos en JSONESQUEMATu programa pide: GET/ciudades/madridEl servidor responde200Datos en JSON
Una API web funciona con peticiones y respuestas HTTP.

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), PUT o PATCH (modificar) y DELETE (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 POST o PUT).

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.

Los códigos de estado más habituales.Código: 200; 400; 401 / 403; 404; 429; 500. Significa: Todo bien; Petición mal formada; Sin permiso; No existe; Demasiadas peticiones; Error del servidorCOMPARATIVACódigo200400401 / 403404429500SignificaTodo bienPetición mal formadaSin permisoNo existeDemasiadas peticionesError del servidor
Los códigos de estado más habituales.

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).

Una clave de API es como una contraseña.No: Nunca en el código ni en GitHub. No: Nunca en el JavaScript de una web pública. Sí: En variables de entorno o .env. Sí: Si recibes un 429, espera y reintentaLISTA RÁPIDAClaves de APINunca en el código ni en GitHubNunca en el JavaScript de una web públicaEn variables de entorno o .envSi recibes un 429, espera y reintenta
Una clave de API es como una contraseña.

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 .env incluido 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.