system onlinepath: /guias/programacion/como-crear-y-consumir-una-api-rest/mode: knowledge_baselocal:
Programación · Nivel intermedio

Cómo crear y consumir una API REST

REST no es una tecnología ni un lenguaje: es un conjunto de convenciones sobre cómo usar HTTP para que dos programas se entiendan. Entenderlas hace que crear o consumir cualquier API deje de ser un misterio.

10 min de lectura▣ Actualizada el ◇ Por Underc0de
Respuesta rápida

Una API es la puerta por la que un programa usa a otro; REST es un conjunto de convenciones —no una tecnología ni un lenguaje— sobre cómo usar HTTP para que esa comunicación sea predecible. Sus piezas: los recursos (las cosas que la API maneja: usuarios, pedidos) se identifican con rutas (/pedidos/42); los métodos HTTP dicen qué hacer con ellos (GET leer, POST crear, PUT/PATCH modificar, DELETE borrar); y los códigos de estado informan cómo salió (2xx bien, 4xx error del cliente, 5xx error del servidor). Los datos suelen viajar en JSON. Consumir una API es enviarle una petición con el método y la ruta correctos, y leer su respuesta. Lo clave: estas convenciones son independientes del lenguaje, así que entenderlas sirve para crear una API en cualquier tecnología —la implementación concreta en Node y Express— o para consumir cualquier API ajena.

Ver índice de contenidos
  1. 01Qué es REST
  2. 02Los métodos HTTP
  3. 03Los códigos de estado
  4. 04Recursos y rutas
  5. 05Consumir una API
  6. 06Errores frecuentes
  7. 07Preguntas frecuentes
  8. 08Fuentes

Qué es REST

Una API (interfaz de programación de aplicaciones) es la forma en que un programa ofrece sus servicios a otros programas. REST —de Representational State Transfer— es un estilo de arquitectura: un conjunto de convenciones para diseñar APIs sobre HTTP de manera que sean predecibles y fáciles de usar.

Lo que hay que entender de entrada

REST no es una tecnología que se instala ni depende de un lenguaje: es un acuerdo sobre cómo usar cosas que ya existen —HTTP, sus métodos, sus códigos—. Por eso una API REST hecha en Python, en JavaScript o en cualquier otro lenguaje se ve y se usa igual: las convenciones son las mismas. Aprender REST es aprender esas convenciones una vez y aplicarlas en todos lados.

Esta guía cubre los conceptos; la guía de Node y Express los lleva a una implementación concreta. Separarlos es a propósito: entender REST primero hace que cualquier implementación después sea evidente.

Los métodos HTTP

Las piezas de una API REST, mostradas alrededor de una petición y su respuesta. En el centro, el modelo: un cliente envía una petición HTTP a un servidor, que responde. La petición tiene tres partes que definen qué se quiere hacer. Primero, el método HTTP, que indica la acción: GET para leer o consultar sin modificar nada, POST para crear un recurso nuevo, PUT o PATCH para modificar uno existente, y DELETE para borrarlo. Segundo, la ruta, que identifica el recurso sobre el que se actúa siguiendo una convención de sustantivos en plural, como barra pedidos para la colección de todos los pedidos, o barra pedidos barra cuarenta y dos para el pedido concreto número cuarenta y dos. Tercero, para las peticiones que crean o modifican, un cuerpo con los datos, habitualmente en formato JSON. La respuesta del servidor trae dos cosas clave. Primero, un código de estado de tres cifras que informa cómo salió: los que empiezan con dos indican éxito, como el doscientos para una operación correcta o el doscientos uno para algo creado; los que empiezan con cuatro indican un error del cliente, como el cuatrocientos para una petición mal formada, el cuatrocientos uno o cuatrocientos tres para problemas de autenticación o permisos, y el cuatrocientos cuatro para un recurso que no existe; y los que empiezan con cinco indican un error del servidor. Segundo, un cuerpo con los datos pedidos o con la descripción del error, también en JSON. A los lados, la idea que ordena todo: la combinación de método más ruta describe completamente una operación —GET barra pedidos barra cuarenta y dos significa leé el pedido cuarenta y dos— y el código de estado describe el resultado; entender esas dos convenciones permite crear o consumir cualquier API sin importar el lenguaje. Al pie, la aclaración: REST es un conjunto de convenciones sobre HTTP, no una tecnología que se instale, así que estas piezas son iguales en toda API REST.
Método + ruta describen la operación; el código de estado describe el resultado. Iguales en toda API REST.

El método HTTP dice qué acción se quiere hacer sobre un recurso. Los cuatro que cubren casi todo:

Métodos HTTP en REST
MétodoAcciónEjemplo
GETLeer, sin modificar nadaGET /pedidos/42
POSTCrear un recurso nuevoPOST /pedidos
PUT / PATCHModificar uno existentePATCH /pedidos/42
DELETEBorrarDELETE /pedidos/42

Una propiedad importante: GET debe ser seguro (no cambia nada, solo lee), y por eso nunca se usa para operaciones que modifican datos. Confundir esto —hacer un borrado con un GET— es un error clásico con consecuencias de seguridad, como se ve en CSRF.

Los códigos de estado

La respuesta trae un código de estado de tres cifras que informa cómo salió la operación. Se agrupan por su primera cifra, y conocer los grupos evita adivinar:

  • 2xx — éxito. 200 operación correcta, 201 recurso creado, 204 hecho sin contenido que devolver.
  • 4xx — error del cliente. El problema está en la petición: 400 mal formada, 401 sin autenticar, 403 sin permiso, 404 no existe.
  • 5xx — error del servidor. El problema está del lado de la API: 500 error interno, 503 servicio no disponible.

La distinción entre 4xx y 5xx es la más útil para diagnosticar: un 4xx dice «vos mandaste algo mal» (revisá tu petición); un 5xx dice «la API falló» (el problema no es tuyo). Devolver el código correcto es parte de diseñar una buena API: una que responde 200 a todo, incluso a los errores, es imposible de usar bien, como se ve al probar APIs.

Recursos y rutas

REST organiza todo en torno a recursos: las «cosas» que la API maneja (pedidos, usuarios, productos). Cada recurso se identifica con una ruta, y la convención es usar sustantivos en plural, no verbos:

text
Bien (sustantivos, el método indica la acción):
  GET    /pedidos          → listar todos los pedidos
  GET    /pedidos/42       → leer el pedido 42
  POST   /pedidos          → crear un pedido
  PATCH  /pedidos/42       → modificar el pedido 42
  DELETE /pedidos/42       → borrar el pedido 42

Mal (verbos en la ruta, redundante con el método):
  GET  /obtenerPedido?id=42
  POST /crearPedido
  POST /borrarPedido?id=42

La idea: la ruta nombra el recurso, el método dice qué hacerle. Poner el verbo en la ruta (/crearPedido) es redundante y rompe la convención. Recursos anidados —los pedidos de un usuario— siguen la misma lógica: /usuarios/7/pedidos. Esta consistencia es lo que hace que una API REST bien diseñada se pueda adivinar sin leer toda su documentación.

Consumir una API desde el cliente

Consumir una API es enviarle peticiones desde tu programa y usar sus respuestas. En el navegador y en muchos entornos, la herramienta estándar es fetch, y como las respuestas tardan, se maneja con código asíncrono:

javascript
// Leer un recurso: GET.
const respuesta = await fetch('https://api.ejemplo.test/pedidos/42');
if (!respuesta.ok) {                    // respuesta.ok es true para 2xx
  throw new Error(`Error ${respuesta.status}`); // mirar el código de estado
}
const pedido = await respuesta.json();  // el cuerpo, de JSON a objeto

// Crear un recurso: POST con cuerpo JSON.
await fetch('https://api.ejemplo.test/pedidos', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ producto: 'libro', cantidad: 2 }),
});

El patrón es siempre el mismo: elegir método y ruta, enviar (con cuerpo si crea o modifica), comprobar el código de estado antes de confiar en la respuesta, y leer el cuerpo. Esa comprobación del estado es lo que casi todos olvidan y lo que separa un consumo robusto de uno que se rompe al primer error de la API.

Errores frecuentes

  • Poner verbos en las rutas. La ruta nombra el recurso; el método indica la acción. /crearPedido es redundante.
  • Usar GET para modificar datos. GET debe ser seguro; modificar con GET es un riesgo de seguridad.
  • Devolver 200 a todo. Una API que no usa los códigos de estado correctos es imposible de consumir bien.
  • No comprobar el estado al consumir. Leer el cuerpo sin mirar si la respuesta fue exitosa rompe ante el primer error.
  • Confundir REST con un lenguaje. Es un conjunto de convenciones sobre HTTP; se aplica en cualquier tecnología.
  • Ignorar el tipo de contenido. Al enviar JSON hay que indicar la cabecera correspondiente, o el servidor no lo entiende.
  • Exponer credenciales en el cliente. Las claves de una API no van en el código del navegador, que cualquiera puede leer.

Preguntas frecuentes

¿REST es un lenguaje o una tecnología?

Ninguna de las dos: es un estilo de arquitectura, es decir, un conjunto de convenciones sobre cómo diseñar una API usando HTTP para que sea predecible y fácil de usar. No se instala nada llamado REST ni depende de un lenguaje de programación en particular. Se apoya en cosas que ya existen —los métodos de HTTP, sus códigos de estado, las rutas— y define acuerdos sobre cómo combinarlos: los recursos se nombran con sustantivos, el método indica la acción, el código de estado informa el resultado. La consecuencia práctica es muy útil: una API REST hecha en cualquier lenguaje se ve y se consume igual, así que aprender estas convenciones una sola vez sirve para crear APIs en cualquier tecnología y para consumir cualquier API ajena sin tener que reaprender nada.

¿Cuál es la diferencia entre esta guía y la de Node y Express?

Esta guía cubre los conceptos de REST que son independientes del lenguaje: qué es una API REST, cómo se usan los métodos de HTTP, qué significan los códigos de estado, cómo se diseñan los recursos y las rutas, y cómo se consume una API desde un cliente. Son las ideas que sirven en cualquier tecnología. La guía de Node y Express, en cambio, lleva esos conceptos a una implementación concreta: cómo construir efectivamente una API con ese lenguaje y ese marco de trabajo, definiendo rutas, manejando peticiones y conectando una base de datos. La separación es intencional: entender primero las convenciones de REST hace que cualquier implementación posterior resulte evidente, porque solo cambia la sintaxis y no las ideas de fondo. Conviene leer esta primero y la de Node después.

¿Qué significan los códigos de estado?

Son números de tres cifras que la API devuelve para informar cómo salió la operación, y se agrupan por su primera cifra. Los que empiezan con dos indican éxito: el doscientos para una operación correcta, el doscientos uno cuando se creó un recurso, el doscientos cuatro cuando se hizo pero no hay contenido que devolver. Los que empiezan con cuatro indican un error del cliente, es decir, que el problema está en la petición: el cuatrocientos para una petición mal formada, el cuatrocientos uno cuando falta autenticación, el cuatrocientos tres cuando falta permiso, el cuatrocientos cuatro cuando el recurso no existe. Y los que empiezan con cinco indican un error del servidor, es decir, que la falla está del lado de la API. La distinción entre los del grupo cuatro y los del grupo cinco es la más útil para diagnosticar, porque dice de qué lado está el problema.

¿Por qué no debo usar verbos en las rutas?

Porque en REST la acción ya la indica el método de HTTP, así que poner también un verbo en la ruta es redundante y rompe la convención que hace predecibles a las APIs. La idea central es que la ruta nombra el recurso —usando sustantivos, normalmente en plural, como barra pedidos— y el método dice qué hacer con él: leer, crear, modificar o borrar. Así, la combinación de método y ruta describe completamente la operación de forma consistente. Cuando en cambio se ponen verbos en las rutas, como barra crear-pedido o barra borrar-pedido, cada API termina inventando sus propios nombres, se pierde la predecibilidad y quien la consume tiene que leer toda la documentación para adivinar cómo funciona cada operación, en lugar de deducirla a partir de las convenciones.

¿Qué es JSON y por qué se usa tanto en las APIs?

JSON es un formato de texto para representar datos estructurados —objetos con campos y valores, listas, números, textos— que es a la vez fácil de leer para las personas y fácil de procesar para los programas. Se volvió el formato estándar de intercambio en las APIs por varias razones: es ligero, no depende de ningún lenguaje en particular aunque nació del mundo de JavaScript, y prácticamente todos los lenguajes traen herramientas para convertir sus propios datos a JSON y viceversa. En una API REST, los datos que se envían al crear o modificar un recurso, y los que la API devuelve en sus respuestas, viajan habitualmente en JSON. Al enviarlo, conviene indicar en la cabecera correspondiente que el contenido es de ese tipo, para que el servidor sepa cómo interpretarlo; omitir ese detalle es una causa común de errores al consumir o construir APIs.

¿Cómo consumo una API de forma segura?

Con dos cuidados centrales. El primero es comprobar siempre el código de estado de la respuesta antes de confiar en sus datos: una petición puede fallar por muchos motivos, y leer el cuerpo sin verificar primero que la respuesta fue exitosa hace que el programa se rompa ante el primer error de la API. Conviene manejar explícitamente los casos de error según el código recibido. El segundo cuidado es no exponer credenciales en el cliente: si la API requiere una clave o un token, ese secreto no puede ir escrito en el código que corre en el navegador, porque cualquiera puede leerlo inspeccionando la página; en esos casos las peticiones autenticadas se hacen desde un servidor propio que guarda el secreto, no directamente desde el navegador. Con esas dos precauciones, más el uso de conexiones cifradas, el consumo de una API es robusto y seguro.

Fuentes

Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.

Aportes de la comunidad Underc0de

  1. Underc0de, foro. Sección Desarrollo web. Consultas sobre APIs, HTTP y consumo de servicios.
  2. Underc0de, foro. Sección Programación. Diseño y arquitectura de APIs.

Documentación oficial

  1. Mozilla. HTTP en MDN. La referencia de los métodos y códigos de estado citados.
  2. IETF. RFC 9110, HTTP Semantics. La especificación oficial de la semántica de HTTP.
  3. Mozilla. Fetch API. Cómo consumir una API desde el navegador.
  4. Roy Fielding. Architectural Styles (REST). La tesis que definió el estilo REST.