Introducción
¿Por qué quiero hablar de HTTP? Hace unos días tuve una conversación con un compañero sobre qué métodos deberíamos usar en la API REST que estamos construyendo. Ambos teníamos claro que POST
se usa para crear un recurso, DELETE
para eliminarlo y GET
para obtenerlo. Sin embargo, la discusión surgió cuando hablamos de cómo actualizar un recurso. Mi compañero propuso usar PATCH
, mientras que yo comenté que eso depende de qué parte del recurso queremos actualizar.
Esa conversación se alargó más de lo que hubiera querido, así que hoy quiero explicar de manera teórica y práctica cómo usar correctamente estos métodos, para que otros no tengan que pasar por discusiones tan prolongadas.
¿Qué es HTTP?
Como explica bien MDN, HTTP (Hypertext Transfer Protocol o Protocolo de Transferencia de Hipertexto en español) es un protocolo de red para la transmisión de documentos hipermedia, como HTML. Básicamente, es el mecanismo mediante el cual tu navegador se comunica con el servidor de una página web cuando la visitas.
En el diagrama que he generado, se muestra cómo un cliente (navegador) se comunica con un servidor. Es una explicación básica pero detallada que, aunque no es el propósito central de este post, siempre es útil para entender mejor el contexto.
Al crear una API REST, uno de los aspectos clave es que HTTP nos proporciona una serie de métodos específicos para cada tipo de petición. Esto se observa en el diagrama, donde se ven flechas que representan peticiones como GET
, POST
, PUT
y DELETE
.
Si abres las herramientas de desarrollo del navegador, en la pestaña de Red o Network verás todas las peticiones que el navegador realiza al servidor. Podrás ver la URL y el método de cada petición. Por ejemplo, al entrar en Google, la primera petición de mi navegador fue un GET
a una URL específica, y el servidor respondió con un código 200 OK
.
No te preocupes por los códigos de estado (Status Code) de la imagen ya que ese tema da para otro artículo en el que explicaré qué son, cuáles existen y cuándo usarlos.
¿Qué son los métodos HTTP y qué significan GET, POST, PUT, PATCH, DELETE?
Un método HTTP es una indicación de la acción que se quiere realizar sobre un recurso en una API. Estos métodos, también llamados verbos HTTP, incluyen GET
, POST
, DELETE
y otros como PUT
, PATCH
, HEAD
, CONNECT
, TRACE
y OPTIONS
, aunque no siempre se utilizan todos.
Es importante saber que los métodos o verbos HTTP cumplen con algunas características básicas:
- Seguros: cuando no alteran el estado del servidor.
- Idempotentes: no importa cuántas veces se llame al recurso con ese método; siempre debería devolver el mismo resultado.
- Cacheables: la respuesta puede guardarse en la caché para mejorar el rendimiento.
¿Para qué se utiliza cada verbo HTTP?
Como mencionamos antes, cada método tiene un uso específico tanto a nivel teórico como práctico:
- GET: Este método se usa para obtener la información de un recurso. Siempre que se haga una petición GET para un recurso, debería devolver lo mismo siempre que no haya habido cambios. Por este motivo, GET es un verbo seguro e idempotente.
- POST: Este verbo se utiliza para enviar datos al servidor, por ejemplo, para crear un recurso, como un nuevo usuario en nuestro sistema. POST cambia el estado del servidor y, por lo tanto, no es seguro ni idempotente.
- DELETE: Se utiliza para solicitar la eliminación de un recurso. Aunque DELETE no es seguro (porque cambia el estado del sistema), es idempotente, ya que solicitar eliminar un recurso repetidamente (sin errores) debería dar el mismo resultado.
- PUT: Este verbo es idempotente y se utiliza para crear un recurso si no existe o para reemplazar completamente un recurso existente. Cada vez que se llama al método PUT, el recurso se actualiza de la misma manera, manteniendo la idempotencia.
- PATCH: Este verbo permite realizar modificaciones parciales en un recurso. Por ejemplo, si queremos actualizar solo el email de un usuario, podemos usar PATCH para enviar únicamente esa porción del recurso que queremos modificar, en este caso, el email.
Como puedes ver, tanto PUT
como PATCH
se pueden utilizar para actualizar un recurso, pero cada uno tiene su propósito específico. Para más información y ejemplos detallados, puedes consultar la web de MDN, donde se explican todos los verbos de forma completa.
Conclusión
Aunque los métodos más comunes son POST
y GET
, existen otros métodos que aportan claridad y semántica al desarrollar una API. Cada desarrollador puede tener su propia preferencia y puede que algunos usen solo PUT
y GET
, mientras que otros consideren suficiente con POST
, PUT
y GET
. Sin embargo, si has llegado hasta aquí, sabrás que hay más opciones y beneficios al aprovechar todos los verbos de HTTP.
¿Quieres aprender más sobre desarrollo y programación? Si no leíste nuestro último artículo, lo puedes encontrar aquí.