Inicio / Artículos

APIs REST para principiantes: Recursos, métodos, códigos de estado y estadoless

Una guía en lenguaje sencillo sobre qué es una API REST, las cinco ideas que la hacen funcionar, dónde se utiliza en equipos reales y cómo crear y probar la primera.

Editor: REACTAPP.TOP12 min de lectura2660 palabras

Fuentes: REST API Explained for Beginners: What It Actually Is and Why It Matters

“Aprende las API REST” es un consejo que escucha todo desarrollador principiante, pero rara vez se acompaña de una explicación clara sobre su significado. La mayoría de las explicaciones o bien inunden al lector de vocabulario técnico (verbos, puntos finales, estadoless) o bien lo reducen a “lo que conecta la parte frontal y la posterior del sistema”, lo cual es cierto pero no proporciona información útil.

Esta guía sigue un camino intermedio. Aprenderás las cinco ideas que componen casi todas las API REST, un modelo mental que ayuda a comprenderlas mejor, dónde se aplica REST en el trabajo diario de ingeniería, y una secuencia práctica para crear y probar tu primera API con Node.js y Express, además de los errores que más a menudo retrasan a los principiantes.

La definición breve

Una API REST es un conjunto de convenciones que permiten a dos programas comunicarse a través de Internet. Con frecuencia, se trata de una interfaz frontal que solicita datos al backend o le pide que almacene algo. La idea parece abstracta hasta que se crea una, momento en el cual suele hacer sentido rápidamente. Por eso, REST suele ser uno de los primeros conceptos relacionados con el backend que aprenden las personas, ya sea que decidan especializarse en tareas del lado del servidor o se conviertan en desarrolladores full stack que manejan ambos lados de la aplicación.

REST es la abreviatura de Representational State Transfer, un estilo arquitectónico formalizado para describir cómo debe funcionar la propia web. No se necesita la teoría formal para utilizarlo bien; son las convenciones prácticas que se detallan a continuación las que realmente sustentan a las API REST cotidianas.

Por qué REST confunde a tantos principiantes

Dos factores hacen que este tema sea más difícil de lo que debería ser.

El primero es la deriva del vocabulario. En línea, “API” se utiliza para casi cualquier interfaz que un programa ofrece a otro: una API de navegador, las funciones de una biblioteca, un servicio en la nube. REST es una forma específica y muy popular de diseñar una API web. Debido a su amplia difusión, la gente suele decir “API” cuando en realidad se refiere a “REST API”, lo que hace que los aprendices no estén seguros de dónde termina un concepto y comienza el otro.

El segundo problema es que una API no tiene una superficie visual. Un botón o un diseño son cosas que se pueden ver; una REST API no lo es. Es totalmente posible desarrollar proyectos frontales durante semanas tratando “llamar a la API” como una caja negra. La confusión suele surgir cuando finalmente se necesita crear una API propia, y el concepto debe volverse concreto de inmediato.

Las cinco ideas detrás de cada REST API

Sin abreviaturas, una API REST es un método acordado para solicitar y enviar datos a través de HTTP utilizando URLs junto con un pequeño conjunto de acciones estándar. Cinco conceptos cubren casi todo al respecto.

Recursos y sus URLs

Un recurso es algo que la API gestiona: usuarios, publicaciones, pedidos, tareas. Cada recurso, o conjunto de recursos, tiene su propia dirección. /users suele referirse al conjunto de usuarios, mientras que /orders/42 se refiere a un pedido específico. Un buen diseño REST nombra los recursos con sustantivos y deja que el método HTTP describa la acción, por lo que se utiliza /orders/42 en lugar de /getOrder?id=42.

Métodos HTTP

El método indica al servidor qué se desea hacer con el recurso:

  • GET lee los datos sin modificarlos.
  • POST crea algo nuevo, generalmente dentro de una colección como /tasks.
  • PUT reemplaza un recurso existente, mientras que PATCH actualiza parte de él.
  • DELETE lo elimina.
  • Una propiedad que vale la pena conocer desde temprano es la idempotencia. Se espera que GET, PUT y DELETE sean idempotentes: enviar la misma solicitud dos veces deja al servidor en el mismo estado que si se enviara una sola vez. POST por lo general no lo es, ya que dos solicitudes idénticas pueden crear dos registros. Esta distinción explica muchas decisiones de diseño de API posteriormente, como por qué las reintentos son seguros para algunas llamadas y arriesgados para otras.

    Solicitudes y respuestas

    Un cliente envía una solicitud a una de esas URLs. La solicitud contiene el método, la URL, los encabezados (metadatos como el tipo de contenido o un token de autorización) y, para métodos como POST o PATCH, un cuerpo. El servidor responde con una respuesta que contiene un código de estado, encabezados y, por lo general, un cuerpo. En las APIs modernas, ese cuerpo es casi siempre JSON.

    Códigos de estado

    Cada respuesta lleva un número de tres dígitos que resume el resultado. Verá 200 para un éxito, 404 cuando el recurso no existe y 500 cuando ocurre un error en el servidor. El primer dígito indica la categoría: 2xx significa éxito, 4xx indica que el cliente envió algo que el servidor no puede aceptar (una solicitud inválida, falta de autenticación o recurso desconocido), y 5xx significa que el propio servidor tuvo un problema. Leer primero la categoría es la forma más rápida de saber en qué lado del sistema investigar.

    Statelessness

    Cada solicitud debe contener todo lo que el servidor necesita para procesarla. El servidor no depende de recordar qué solicitó el usuario hace un momento. Si, por ejemplo, un punto final requiere que el usuario esté autenticado, cada solicitud incluye las credenciales, a menudo un token en un encabezado. La falta de estado es lo que hace que las API REST sean fáciles de escalar: cualquier instancia del servidor puede manejar cualquier solicitud, ya que ninguna depende de la memoria privada de la conversación.

    Una vez que estas cinco ideas le resulten naturales, la mayoría de la documentación de las API REST dejará de parecerse a un idioma extranjero. Casi todas las páginas de referencia que encuentre son simplemente una lista de recursos, los métodos que cada uno soporta, la estructura de los cuerpos de las solicitudes y respuestas, y los códigos de estado que puede recibir.

    Un modelo mental: hacer un pedido en un restaurante

    Un restaurante es una analogía útil. Los clientes no entran a la cocina a cocinar. Leen el menú, le dicen al camarero lo que desean, y la cocina lo prepara y se lo sirve.

    • El menú es la documentación de la API: enumera lo que se puede solicitar.
    • El camarero es el ciclo de solicitud y respuesta, llevando el pedido adentro y devolviendo el resultado.
    • La cocina es el servidor, realizando tareas que nunca se ven directamente.

    Aplicado a los métodos, un GET sirve para preguntar qué hay en el menú o verificar qué ya está en su mesa. Un POST se utiliza para realizar un nuevo pedido. Un DELETE sirve para devolver un plato. No es necesario conocer cómo está organizada internamente la cocina; basta con hacer el pedido correctamente para obtener una respuesta predecible y consistente cada vez. La analogía tiene sus limitaciones (los restaurantes sí recuerdan su mesa, mientras que una API sin estado no lo hace), pero explica bien la división de responsabilidades.

    Dónde aparece REST en el trabajo de ingeniería real

    REST no es una curiosidad de los libros de texto. Forma parte del trabajo diario en casi todos los equipos de desarrollo de productos:

    • Un desarrollador frontend llama a los puntos finales REST para cargar un perfil, enviar un formulario o actualizar un panel de control.
  • Un desarrollador de backend diseña y mantiene esos puntos finales, decidiendo qué datos se devuelven y en qué formato.
  • Un desarrollador full stack hace ambas cosas; a veces diseña un punto final y lo utiliza desde la interfaz de usuario en la misma hora.
  • Las aplicaciones móviles, las integraciones de terceros y las empresas asociadas interactúan con un producto exclusivamente a través de su API REST, sin que intervenga ninguna interfaz de usuario.
  • Ese último punto es una razón principal por la cual REST se convirtió en el estilo predeterminado para las API web. Un conjunto de endpoints cuidadosamente diseñado puede respaldar simultáneamente al cliente del navegador, las aplicaciones para iOS y Android, así como la integración con socios externos. Es importante diseñar esos endpoints con atención porque todos los clientes terminan dependiendo de ellos; nuestro artículo sobre errores en los contratos de API que afectan la fiabilidad del frontend analiza qué sucede cuando no se hace así.

    Por qué REST sigue siendo el punto de partida adecuado

    Existen otros enfoques. GraphQL y gRPC, entre otros, resuelven ciertos problemas de manera más elegante que REST, como permitir que los clientes soliciten exactamente los campos que necesitan o facilitar llamadas eficientes entre servicios. REST sigue siendo la mejor opción para que un principiante comience, por tres razones prácticas.

    En primer lugar, está en todas partes. La mayoría de las APIs públicas que probablemente usarás, desde proveedores de pagos hasta datos meteorológicos y plataformas sociales, ofrecen una interfaz REST, a menudo como opción predeterminada. Aprenderla una vez te proporciona un modelo mental que puedes reutilizar cada vez que abras documentación desconocida.

    En segundo lugar, sigue el propio diseño de la web. Los métodos HTTP y los códigos de estado no fueron inventados para REST; son el protocolo que ya utilizan los navegadores y los servidores. Aprender REST correctamente significa comprender cómo funciona la web independientemente del framework que uses, y ese conocimiento perdura más allá de cualquier biblioteca en particular.

    Tercero, es el siguiente paso natural después de los fundamentos del frontend. Una vez que te sientas cómodo con HTML, CSS y JavaScript, el momento en que tu interfaz comienza a cargar datos reales en lugar de marcadores de posición predefinidos suele ser cuando un proyecto pasa de ser un prototipo a algo que la gente realmente puede usar. Para muchos desarrolladores orientados al frontend, ese es precisamente el momento en que construir la API por uno mismo deja de ser opcional y comienza el camino hacia el trabajo full stack. Si más adelante deseas comparar los estilos en profundidad, consulta REST vs GraphQL y los intercambios detrás de cada uno.

    Creando tu primera API REST con Node.js y Express

    Leer sobre este tema por sí solo no es suficiente. Se vuelve evidente una vez que has creado algo, aunque sea algo sencillo. Un proyecto típico inicial con Node.js y Express sigue una secuencia como esta:

    1. Crea un servidor mínimo que escuche las solicitudes HTTP entrantes en un puerto.
    2. Agrega una ruta como /tasks y conéctala a un manejador GET que devuelva una lista.
    3. Agrega un manejador POST en la misma ruta que acepte nuevas tareas; por ahora está bien almacenarlas en un array simple en memoria.
    4. Agrega manejadores PUT (o PATCH) y DELETE, generalmente en /tasks/:id, para actualizar y eliminar entradas individuales.
    5. Sustituye el array por una base de datos real una vez que la estructura de la API parezca adecuada.
    6. Prueba cada ruta con una herramienta como Postman antes de conectar cualquier interfaz frontal.

    Dos detalles hacen que esta secuencia funcione. Empezar con un array en memoria mantiene tu atención en las rutas, los métodos y los códigos de estado en lugar de en la configuración de la base de datos. Y el paso final, probar las rutas de forma aislada, es el que los principiantes suelen omitir con más frecuencia. Verificar la API por sí sola antes de que una interfaz dependa de ella hace que la depuración sea mucho más sencilla, ya que nunca te quedas preguntándote si el error está en la API o en el código que la llama.

    A medida que avanzas, devuelve códigos de estado adecuados en lugar de 200 para todo: 201 cuando un POST crea una tarea, 404 cuando un id no existe, 400 cuando el cuerpo de la solicitud carece de un campo requerido. Esas pequeñas decisiones son las que hacen que una API sea agradable de utilizar.

    Dónde suelen quedar atascados los principiantes

    Las personas que tienen dificultades con REST rara vez carecen de habilidades. Suelen estancarse por razones predecibles y resolubles:

    • Aprender simultáneamente los conceptos de REST y un framework como Express, por lo que nunca queda claro qué reglas pertenecen a HTTP y cuáles a la biblioteca.
    • Nunca probar las rutas directamente con una herramienta como Postman, lo que hace que los errores del frontend y del backend sean indistinguibles.
    • Ignorar los códigos de estado y el manejo de errores, y luego confundirse cuando un cliente no puede diferenciar entre éxito y fracaso.
    • Introducirse en la autenticación antes de que las rutas básicas de crear, leer, actualizar y eliminar estén bien definidas.
    • Reproducir exactamente la API de un tutorial en lugar de crear algo sencillo con recursos diferentes, lo que oculta si se comprendieron los conceptos.

    Estos son problemas de estructura, no de talento. Solucionarlos suele ser lo que diferencia a quien realmente se siente cómodo desarrollando APIs de backend de aquel que solo puede recitar la terminología pero aún no sabe diseñar un endpoint a partir de un archivo en blanco.

    Adaptar el enfoque a donde uno parte

    Los mismos principios básicos son aplicables a todos, pero el énfasis varía según la situación de cada persona.

    • Estudiantes se benefician al aprender REST desde temprano, ya que suele ser lo primero que convierte a un proyecto personal de una página estática en una aplicación real.
    • Candidatos a empleo necesitan tanto la habilidad práctica para desarrollar y utilizar APIs como la capacidad de explicarlo claramente, ya que las preguntas sobre REST aparecen en las entrevistas para muchos puestos.
  • Quienes cambian de carrera suelen encontrar estas ideas más accesibles de lo esperado; el modelo de restaurante se basa en la experiencia cotidiana en lugar de en conocimientos técnicos.
  • Desarrolladores front-end aprenden con frecuencia REST específicamente como puente hacia el trabajo full stack, ampliando sus habilidades sin abandonar lo que ya saben.
  • Hábitos que ayudan a asimilar los conceptos

    Algunos hábitos separan consistentemente a quienes realmente entienden REST de aquellos que solo reconocen las palabras.

    Crea algo pequeño y original, como una lista de tareas o una API de notas, en lugar de limitarte a leer documentación. Los conceptos se vuelven más duraderos una vez que hayas tenido que depurar una ruta que dejó de funcionar.

    Aprenda a diagnosticar los fallos en lugar de adivinar. Lea el código de estado y el mensaje de error, decida si el problema está en el lado del cliente o del servidor, y confírmelo con una solicitud directa. En el trabajo, ese instinto es más importante que las definiciones memorizadas, y es lo que distingue a quien ha creado APIs de quien solo las ha utilizado. A medida que avanza, devolver errores en un formato consistente y documentado facilita este diagnóstico para todos quienes consumen su API.

    Obtenga retroalimentación rápidamente. Poder preguntarle a un desarrollador experimentado, a un colega o en un foro de la comunidad por qué una solicitud devuelve datos incorrectos suele marcar la diferencia entre completar un primer proyecto de API y abandonarlo. Muchos aprendices pierden el impulso cuando pasan largos períodos viendo videos de forma pasiva sin ese ciclo de retroalimentación.

    Preguntas comunes de principiantes

    ¿Qué es una API REST, en una frase?

    Se trata de un conjunto de convenciones que permiten a las aplicaciones comunicarse por Internet mediante solicitudes HTTP estándar y respuestas predecibles.

    ¿Necesitan los desarrolladores front-end aprender REST?

    Sí. El trabajo en el frente del cliente implica consumir APIs REST constantemente, por lo que se espera un conocimiento práctico en casi todos los casos. También es uno de los puntos de entrada más fáciles si más adelante se desea pasar al desarrollo full stack.

    ¿Es difícil aprender REST?

    Las ideas básicas son comprensibles una vez que se explican de manera sencilla. La mayor parte de la dificultad proviene de explicaciones repletas de jerga y no de los conceptos en sí.

    ¿Se requiere un título en ciencias de la computación para crear APIs back-end?

    No. Muchos desarrolladores en activo, incluidos los de full stack, aprendieron a través de bootcamps, autoestudio o mentoría en lugar de mediante un título formal.

    ¿Se puede aprender esto mientras se tiene un trabajo a tiempo completo?

    Sí. Los conceptos son compactos, y un pequeño proyecto desarrollado en unas pocas noches o fines de semana es suficiente para darles forma concreta.

    Conclusión

    REST es menos intimidante de lo que su reputación sugiere. Es una forma consistente para que el software solicite y envíe información, basada en el mismo HTTP que ya impulsa la web, y está presente en la mayoría de las aplicaciones que utilizamos a diario.

    • Cinco ideas son las más importantes: recursos con URLs, métodos HTTP, solicitudes y respuestas, códigos de estado e estado sin estado.
    • Aprende los conceptos antes que el framework, y luego utiliza Express para darles forma concreta.
    • Prueba cada ruta por separado antes de que cualquier interfaz frontal dependa de ella.
    • Trata los códigos de estado y el manejo de errores como parte del diseño, no como algo secundario.
  • Crea algo pequeño y original, y aprende a diagnosticar los fallos en lugar de adivinar.
  • Lecturas relacionadas