¿Qué es una API REST?

Actualizado: agosto de 2026

Una API REST es una API que sigue el estilo arquitectónico REST: recursos en URLs, solicitudes sin estado y métodos HTTP estándar. REST — Representational State Transfer, definido en la tesis doctoral de Roy Fielding del año 2000 — es un estilo, no un protocolo ni un estándar: un conjunto de restricciones que, honradas en conjunto, producen APIs que toda la web ya sabe consumir, cachear y escalar.

Puntos clave

PreguntaRespuesta
El modeloRecursos en URLs · representaciones (normalmente JSON) · métodos estándar
La fuenteLa tesis de Fielding del 2000, capítulo 5 — un estilo arquitectónico, no una spec
Las seis restriccionesCliente-servidor · sin estado · cacheable · interfaz uniforme · en capas · código bajo demanda (opcional)
Los verbosGET · POST · PUT · PATCH · DELETE — con semántica de seguridad e idempotencia
La nota honesta al pieLa mayoría de las APIs “REST” de producción son APIs HTTP de nivel 2 — y está bien

Un ciclo CRUD completo en HTTP crudo

Todo el estilo en cuatro solicitudes — esto es lo que cada framework y SDK termina enviando:

POST /v1/posts                     →  201 Created            crear
{ "title": "Hello REST" }             Location: /v1/posts/8fk2

GET /v1/posts/8fk2                 →  200 OK                 leer
                                      { "title": "Hello REST", … }

PUT /v1/posts/8fk2                 →  200 OK                 reemplazar
{ "title": "Hello again" }            (PATCH actualizaría campos)

DELETE /v1/posts/8fk2              →  204 No Content         eliminar
GET /v1/posts/8fk2                 →  404 Not Found          …y ya no está

El mismo ciclo a través de SDKs que envuelven las llamadas REST:

// JavaScript / Node.js — Back4app JS SDK
// The REST semantics, wrapped: create, read, update, delete
const post = new Parse.Object('Post');
post.set('title', 'Hello REST');
await post.save();                            // POST   /classes/Post      → 201

const fetched = await new Parse.Query('Post')
  .get(post.id);                              // GET    /classes/Post/:id  → 200

fetched.set('title', 'Hello again');
await fetched.save();                         // PUT    /classes/Post/:id  → 200

await fetched.destroy();                      // DELETE /classes/Post/:id  → 200

Las seis restricciones de REST

  1. Cliente-servidor — interfaz e implementación evolucionan de forma independiente; la UI nunca sabe cómo funciona el almacenamiento.
  2. Sin estado — cada solicitud es autocontenida; el servidor no guarda sesión entre llamadas, que es lo que permite que cualquier réplica responda cualquier request.
  3. Cacheable — las respuestas declaran su propia cacheabilidad; los GET con headers de caché correctos ponen toda la infraestructura de caché de la web (navegadores, CDNs, proxies) a trabajar para tu API.
  4. Interfaz uniforme — la restricción que es REST, en cuatro partes: recursos identificados por URIs; manipulación mediante representaciones (envías de vuelta el JSON en el que quieres que el recurso se convierta); mensajes autodescriptivos (método + headers dicen todo lo necesario para procesar la solicitud); e hipermedia como motor del estado de la aplicación (las respuestas enlazan las siguientes acciones).
  5. Sistema en capas — los clientes no pueden saber si hablan con el origen, un caché o un gateway; los intermediarios se insertan con libertad.
  6. Código bajo demanda (opcional) — los servidores pueden enviar código ejecutable a los clientes; la única restricción marcada como opcional, y la que la mayoría de las APIs ignora.

Métodos HTTP: seguridad, idempotencia, CRUD

La tabla que falta en casi toda página de ranking — la semántica del RFC 9110, condensada:

MétodoRol CRUD¿Seguro?¿Idempotente?¿Reintentar a ciegas?
GETLeer
POSTCrearNoNoNo — puede duplicar
PUTReemplazarNoSí — mismo resultado
PATCHActualización parcialNoNo garantizadoDepende del diseño del patch
DELETEEliminarNoSí — sigue eliminado

Seguro significa que la solicitud no cambia nada; idempotente, que repetirla no cambia nada más. Esto no es trivia — es la política de reintentos: un timeout de red en un PUT se puede reintentar sin miedo; el mismo timeout en un POST necesita una idempotency key o un chequeo de duplicados. El mapeo CRUD completo tiene su propia entrada.

Códigos de estado: qué devolver y cuándo

SituaciónDevuelve
Lectura exitosa200 OK
Recurso creado201 Created + header Location
Eliminado; nada que decir204 No Content
Solicitud malformada400 Bad Request
Sin credenciales o inválidas401 Unauthorized
Autenticado pero sin permiso403 Forbidden
El recurso no existe404 Not Found
Superó el rate limit429 Too Many Requests (detalles)
Falla del servidor500 Internal Server Error

Las distinciones 401/403 y 200/201/204 son donde se nota la artesanía de una API: los códigos precisos hacen que los clientes puedan depurarse con nada más que la línea de estado.

¿Tu API es realmente REST? La escalera de madurez

La sección honesta que los explicadores comerciales omiten. El Richardson Maturity Model califica las APIs HTTP: nivel 0 (una URL, un verbo, RPC disfrazado), nivel 1 (recursos en URLs), nivel 2 (métodos y códigos de estado correctos), nivel 3 (hipermedia — HATEOAS).

Richardson Maturity Model para APIs RESTCuatro niveles desde el nivel cero, HTTP como simple túnel, pasando por recursos, luego verbos HTTP y códigos de estado, hasta el nivel tres con controles de hipermedia, con la mayoría de las APIs de producción viviendo en el nivel dos.

Nivel 0 — un endpoint, POST para todo (RPC disfrazado)

Nivel 1 — recursos: /posts/8fk2

Nivel 2 — verbos + códigos de estado ← aquí vive la mayoría de las APIs de producción

Nivel 3 — hipermedia: las respuestas enlazan las siguientes acciones (HATEOAS)

Cuatro niveles desde el nivel cero, HTTP como simple túnel, pasando por recursos, luego verbos HTTP y códigos de estado, hasta el nivel tres con controles de hipermedia, con la mayoría de las APIs de producción viviendo en el nivel dos.

Por insistencia del propio Fielding, una API sin hipermedia no es REST — escribió un ensayo punzante diciendo exactamente eso. En la práctica, casi toda “API REST” aclamada es una API HTTP de nivel 2: recursos, verbos, códigos de estado, JSON, sin hipermedia. Esto importa menos como pureza y más como vocabulario — conocer la escalera te dice qué significa el término en una oferta de trabajo (nivel 2) versus en la tesis (nivel 3), y te salva tanto del HATEOAS de culto al cargamento como de las correcciones pedantes.

REST vs. SOAP vs. GraphQL vs. gRPC

RESTSOAPGraphQLgRPC
NaturalezaEstilo arquitectónicoProtocoloLenguaje de consultas + runtimeFramework RPC
CableJSON sobre HTTPSobres XMLJSON sobre HTTP (un endpoint)Protobuf sobre HTTP/2
ContratoOpenAPI (convención)WSDL (obligatorio)Schema (integrado).proto (obligatorio)
CachéNativo de HTTP — su superpoderPobreA nivel de aplicaciónA nivel de aplicación
Su fuerteCRUD público de recursosFormalidad enterprise/legacyDatos anidados moldeados por el clienteVelocidad entre servicios internos
DebilidadFormas fijas que over/underfetcheanVerbosidadComplejidad de caché y rate limitsFricción en navegadores

La comparación con GraphQL tiene una entrada completa propia.

Convenciones que hacen agradable una API REST

Más allá de las restricciones, las convenciones con las que los consumidores te califican en silencio: recursos con sustantivos en plural (/posts, no /getPost); anidar un nivel como máximo (/posts/8fk2/comments, y ahí parar); paginación en cada colección — basada en cursores por profundidad y estabilidad, con límites aplicados; filtrado y ordenamiento como parámetros de query, no como variantes del endpoint; versionado con una política explícita (path /v1/ o header — elige uno, publica ventanas de deprecación); negociación de contenido respetada (Accept, Content-Type); y errores como JSON estructurado con un código legible por máquinas, no solo prosa. Nada de esto está en la tesis; todo está en la diferencia entre una API que los desarrolladores recomiendan y una que soportan.

Casos de uso comunes

  • APIs públicas y de socios — la ubicuidad de REST es la funcionalidad: cada lenguaje, herramienta y desarrollador lo habla.
  • Backends de apps móviles y web — el CRUD de recursos sobre HTTP calza con cómo la mayoría de las pantallas consume datos en realidad.
  • Costuras entre microservicios — contratos internos donde el tooling de HTTP (gateways, tracing, caché) se gana su lugar.
  • Integraciones estilo webhook — sistemas notificando a sistemas con llamadas HTTP simples que ambos lados ya entienden.
  • APIs de datos autogeneradas — plataformas que exponen una base de datos como recursos REST — la ruta más rápida del esquema a una API funcionando.

¿Deberías usar REST? Matriz de decisión

REST es el default correcto cuando…Busca otra cosa cuando…
API pública, consumidores desconocidosMalla interna de alto throughput → gRPC
Dominio CRUD con forma de recursosLos clientes necesitan moldear respuestas anidadas → GraphQL
El caché HTTP puede cargar las lecturasPush bidireccional en tiempo real → WebSockets / live queries
La simplicidad y la amplitud del tooling importanSe exigen contratos enterprise formales → SOAP
Las pantallas mapean limpio a recursosUna pantalla agrega cinco servicios → endpoint compuesto / BFF

Limitaciones y trade-offs

  • Las representaciones fijas no les quedan a clientes diversos. El par overfetching/underfetching es la debilidad estructural de REST; los sparse fieldsets y los parámetros de expansión mitigan, GraphQL rediseña.
  • No hay contrato obligatorio. Nada fuerza una spec OpenAPI, así que muchas APIs REST están documentadas por folklore; la disciplina es opcional donde gRPC y GraphQL la hacen estructural.
  • La ausencia de estado repite contexto. La auth y el contexto de tenant viajan en cada solicitud — barato en bytes, pero empuja la semántica de sesión a los tokens y vuelve incómodos algunos flujos (transacciones de varios pasos).
  • La tentación del N+1 por diseño. Pensar en recurso-por-URL invita a clientes de una-llamada-por-ítem; las buenas APIs entregan expansión y batch antes de que los consumidores improvisen loops.
  • La palabra “REST” es ambigua. API HTTP de nivel 2 en la mayoría de las bocas, arquitectura de hipermedia en la tesis — lee cuál de las dos quiere decir una spec, una oferta de trabajo o un revisor antes de discutir.

APIs REST en Back4app

Back4app es una plataforma open-source de Backend as a Service (BaaS) que combina base de datos gestionada, APIs REST y GraphQL generadas automáticamente, autenticación, almacenamiento de archivos y funciones serverless con Cloud Code. La API REST aquí se genera, no se construye: cada clase de tu modelo de datos es de inmediato un recurso — POST /classes/Post crea, GET /classes/Post/:id lee, con los métodos, los códigos de estado y la semántica de Location del recorrido de arriba — detrás de keys, tokens de usuario y permisos a nivel de clase haciendo cumplir la frontera. Los code tabs muestran el mismo ciclo a través de los SDKs, que son envoltorios idiomáticos delgados sobre exactamente este HTTP; cuando una operación crece más allá del CRUD, una función de Cloud Code agrega un endpoint personalizado en un archivo. REST de nivel 2, correcto por defecto, del esquema a la URL en lo que tardas en definir la clase.

Preguntas frecuentes

¿Qué es una API REST en palabras simples?

Una forma de que dos aplicaciones hablen sobre HTTP usando convenciones que todos ya conocen: cada cosa (un usuario, un pedido) vive en una URL, actúas sobre ella con un verbo estándar — GET para leer, POST para crear, PUT o PATCH para actualizar, DELETE para eliminar — y cada request se sostiene sola, llevando todo lo que el servidor necesita para responderla.

¿Qué significa REST?

Representational State Transfer — transferencia de estado representacional — de la tesis doctoral de Roy Fielding del año 2000. El nombre describe el mecanismo: el servidor transfiere al cliente una representación del estado de un recurso (normalmente JSON), y el cliente mueve la aplicación de estado en estado a través de esas representaciones.

¿Cuál es la diferencia entre REST y RESTful?

En el uso cotidiano, ninguna — los términos son intercambiables. Siendo pedantes, REST nombra el estilo arquitectónico y RESTful es el adjetivo para una API que lo implementa. La afirmación que circula de que "RESTful sigue todas las reglas y REST solo algunas" no tiene base alguna en el trabajo de Fielding.

¿Cuáles son las seis restricciones de REST?

Separación cliente-servidor, ausencia de estado, cacheabilidad, interfaz uniforme, sistema en capas y — opcionalmente — código bajo demanda. La interfaz uniforme se despliega a su vez en cuatro reglas: recursos identificados por URIs, manipulación mediante representaciones, mensajes autodescriptivos e hipermedia como motor del estado de la aplicación.

¿Cuál es la diferencia entre PUT y POST?

Idempotencia y direccionamiento. POST crea bajo una colección — el servidor asigna la URL, y repetir la solicitud crea duplicados. PUT escribe una representación completa en una URL conocida — repetirlo produce el mismo estado, lo que hace seguros los reintentos. Esa diferencia de seguridad, no el estilo, es la razón por la que la distinción importa.

¿Una API REST tiene que usar JSON?

No. REST es agnóstico al formato — un recurso puede representarse como JSON, XML, HTML o una imagen, negociado mediante los headers Accept y Content-Type. JSON es simplemente el default moderno porque todo cliente lo parsea barato. La restricción trata de representaciones, no de una en particular.

¿Qué significa sin estado (stateless) en una API REST?

Que el servidor no guarda memoria del cliente entre solicitudes: cada request lleva todo lo necesario para procesarla, incluidas credenciales como un bearer token. La recompensa es la escala horizontal — cualquier servidor puede responder cualquier request — y el costo son unos pocos bytes repetidos de contexto por llamada.

¿Qué es HATEOAS?

Hypermedia As The Engine Of Application State: las respuestas incluyen enlaces a las acciones disponibles a continuación, de modo que los clientes navegan la API como las personas navegan la web — siguiendo enlaces en vez de codificar URLs a mano. Es la restricción menos implementada; la mayoría de las APIs "REST" de producción la omiten y viven felices en el nivel 2 del modelo de madurez.

Términos relacionados

Compara con

Lecturas recomendadas

¿Listo para construir tu backend?

Empieza tu proyecto en Back4app en minutos — base de datos, autenticación, APIs y Cloud Code incluidos. Sin tarjeta de crédito.

Escrito y revisado por Back4app Engineering, Back4app Engineering · Publicado el 2026-08-27