¿Qué son los métodos HTTP y para qué sirven?
HTTP methods

Hoy en día es fundamental ser eficiente, con esa motivación hace unas semanas presentamos varios artículos técnicos con el objetivo de aprender a utilizar APIs, incluyendo APIs de Inteligencia Artificial, y a interconectarlas para automatizar procesos.

Hasta ahora, hemos publicado los siguientes artículos, que son clave para alcanzar este objetivo:

Si no los has leído aún, te recomendamos hacerlo para comprender mejor lo que hoy te presentamos.

Los métodos HTTP son una pieza importante para el mundo online, imagina que estás en una biblioteca: los métodos HTTP son como las diferentes acciones que puedes realizar allí, como buscar un libro, devolverlo o solicitar uno nuevo. Estos métodos permiten que tu navegador y los servidores web se comuniquen de manera eficaz.

A continuación te presento el contenido de esta publicación:

  1. ¿Qué son los métodos HTTP?
  2. Principales métodos HTTP
    1. GET
    2. POST
    3. PUT
    4. DELETE
  3. ¿Para qué sirven los métodos HTTP?
  4. Ejemplos prácticos con CURL
    1. Consultar un usuario con GET
    2. Crear un nuevo usuario con POST
    3. Actualizar un usuario con PUT
    4. Eliminar un usuario con DELETE
  5. Conceptos clave

2. ¿Qué son los métodos HTTP?

Los métodos HTTP (HyperText Transfer Protocol) son un conjunto de operaciones que definen las acciones que se pueden realizar en los recursos web. Es como tener un conjunto de instrucciones estándar que tanto tú como la biblioteca entendéis, facilitando la comunicación y evitando malentendidos.

3. Principales métodos HTTP

3.1. GET

El método GET se utiliza para solicitar datos de un servidor. Es como ir a la biblioteca y pedir prestado un libro: no modificas nada, solo obtienes información.

Ejemplo con CURL:

curl -X GET https://reqres.in/api/users/2

Explicación de la respuesta:

Cuando realizas esta solicitud, el servidor te devuelve una respuesta con el código de estado 200 OK, lo que indica que la solicitud fue exitosa. Además, el servidor te envía los datos del recurso solicitado, en este caso, los detalles de un usuario.

Aquí tienes un ejemplo de la respuesta completa simulada, incluyendo encabezados:

Encabezados de la respuesta:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 1234
Date: Sun, 28 Sep 2023 12:00:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

{
  "data": {
    "id": 2,
    "email": "janet.weaver@reqres.in",
    "first_name": "Janet",
    "last_name": "Weaver",
    "avatar": "https://reqres.in/img/faces/2-image.jpg"
  },
  "support": {
    "url": "https://reqres.in/#support-heading",
    "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
  }
}

Análisis:

  • El código de estado 200 OK indica que la solicitud fue exitosa.
  • El Content-Type es application/json, lo que significa que el cuerpo de la respuesta está en formato JSON.
  • El cuerpo contiene un objeto con los detalles del usuario, como su email, first_name, last_name y avatar.
  • Además, se proporciona una sección de «support» con una URL y un mensaje adicional.

3.2. POST

El método POST sirve para enviar datos al servidor, generalmente para crear un nuevo recurso. Es similar a donar un libro a la biblioteca: aportas algo nuevo al catálogo.

Ejemplo con CURL:

curl -X POST -H "Content-Type: application/json" -d '{"name": "morpheus", "job": "leader"}' https://reqres.in/api/users

Explicación de la respuesta:

Cuando utilizas el método POST para crear un recurso, el servidor responde con el código de estado 201 Created, lo que significa que el recurso fue creado exitosamente. Aquí tienes la respuesta completa simulada:

Encabezados de la respuesta:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Content-Length: 155
Date: Sun, 28 Sep 2023 12:05:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

{
  "name": "morpheus",
  "job": "leader",
  "id": "75",
  "createdAt": "2023-09-28T12:05:45.394Z"
}

Análisis:

  • El código de estado 201 Created confirma que el servidor ha creado un nuevo recurso.
  • En el cuerpo de la respuesta, ves los datos que enviaste (name y job), junto con un identificador único (id) generado por el servidor y la marca de tiempo createdAt.
  • El Content-Type es application/json, indicando que los datos están en formato JSON.

3.3. PUT

El método PUT se utiliza para actualizar un recurso existente. Es como editar un libro que ya existe en la biblioteca para corregir errores o añadir información.

Ejemplo con CURL:

curl -X PUT -H "Content-Type: application/json" -d '{"name": "morpheus", "job": "zion resident"}' https://reqres.in/api/users/2

Explicación de la respuesta:

Al utilizar PUT, el servidor normalmente responde con un código 200 OK si la actualización se ha realizado correctamente. Aquí tienes la respuesta completa simulada:

Encabezados de la respuesta:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 145
Date: Sun, 28 Sep 2023 12:10:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

{
  "name": "morpheus",
  "job": "zion resident",
  "updatedAt": "2023-09-28T12:10:45.394Z"
}

Análisis:

  • El código de estado 200 OK indica que la solicitud fue exitosa y los datos se han actualizado correctamente.
  • El cuerpo de la respuesta contiene los datos actualizados (name y job) junto con una marca de tiempo (updatedAt) que refleja cuándo se realizó la modificación.
  • El Content-Type es application/json, indicando que los datos están en formato JSON.

3.4. DELETE

El método DELETE se utiliza para eliminar un recurso. Es equivalente a retirar un libro obsoleto de la biblioteca.

Ejemplo con CURL:

curl -X DELETE https://reqres.in/api/users/2

Explicación de la respuesta:

Al eliminar un recurso, el servidor responde con el código de estado 204 No Content, lo que significa que la solicitud fue exitosa, pero no hay contenido en la respuesta. Aquí tienes la respuesta completa simulada:

Encabezados de la respuesta:

HTTP/1.1 204 No Content
Date: Sun, 28 Sep 2023 12:15:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

(No hay contenido)

Análisis:

  • El código de estado 204 No Content indica que el recurso fue eliminado exitosamente.
  • No hay cuerpo en la respuesta, lo cual es esperado, ya que has eliminado el recurso y no hay datos adicionales que el servidor deba enviarte.

4. ¿Para qué sirven los métodos HTTP?

Los métodos HTTP son esenciales para que los clientes (como tu navegador o una aplicación) y los servidores web puedan comunicarse de forma coherente y estructurada. Es como tener reglas claras en una biblioteca para saber cómo pedir prestado un libro, devolverlo o donar uno nuevo. Sin estos métodos, la comunicación sería caótica y no sabrías qué esperar de cada acción.

5. Ejemplos prácticos con CURL

En esta sección, vas a profundizar en cómo utilizar la herramienta CURL para interactuar con una API utilizando los métodos HTTP que has aprendido previamente. Usarás la API pública de prueba ReqRes.in, que es una excelente herramienta para simular llamadas HTTP reales.

5.1. Consultar un usuario con GET

El método GET se utiliza para solicitar datos de un recurso. En este caso, vas a pedir los detalles de un usuario específico con id=2.

Ejemplo de CURL:

curl -X GET https://reqres.in/api/users/2

Explicación del comando:

  • -X GET: Especifica que quieres usar el método GET.
  • https://reqres.in/api/users/2: Es la URL de la API que estás llamando. En este caso, estás pidiendo los datos del usuario con el id 2.

Respuesta esperada:
Cuando realices esta solicitud, obtendrás una respuesta con el código de estado 200 OK, lo que indica que la operación fue exitosa. Aquí está la respuesta simulada completa, incluyendo los encabezados:

Encabezados de la respuesta:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 1234
Date: Sun, 28 Sep 2023 12:00:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

{
  "data": {
    "id": 2,
    "email": "janet.weaver@reqres.in",
    "first_name": "Janet",
    "last_name": "Weaver",
    "avatar": "https://reqres.in/img/faces/2-image.jpg"
  },
  "support": {
    "url": "https://reqres.in/#support-heading",
    "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
  }
}

Análisis de la respuesta:

  • Código 200 OK: La solicitud ha sido exitosa.
  • Content-Type: Indica que la respuesta está en formato JSON.
  • Cuerpo de la respuesta: Contiene los datos del usuario con id=2, incluyendo su email, nombre, apellido y su avatar (imagen de perfil). También hay una sección de soporte con un mensaje opcional.

5.2. Crear un nuevo usuario con POST

El método POST se utiliza para enviar datos y crear un nuevo recurso en el servidor. En este caso, vas a crear un nuevo usuario.

Ejemplo de CURL:

curl -X POST -H "Content-Type: application/json" -d '{"name": "morpheus", "job": "leader"}' https://reqres.in/api/users

Explicación del comando:

  • -X POST: Especifica que estás utilizando el método POST.
  • -H "Content-Type: application/json": Define el tipo de contenido que estás enviando, en este caso, JSON.
  • -d '{"name": "morpheus", "job": "leader"}': Especifica los datos que estás enviando en la solicitud. Aquí estás enviando un nuevo usuario con el nombre «morpheus» y el trabajo «leader».
  • https://reqres.in/api/users: Es la URL de la API para crear un nuevo usuario.

Respuesta esperada:
Después de enviar la solicitud, el servidor responderá con el código 201 Created, indicando que el nuevo recurso ha sido creado correctamente. Aquí tienes la respuesta simulada completa:

Encabezados de la respuesta:

HTTP/1.1 201 Created
Content-Type: application/json; charset=utf-8
Content-Length: 155
Date: Sun, 28 Sep 2023 12:05:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

{
  "name": "morpheus",
  "job": "leader",
  "id": "75",
  "createdAt": "2023-09-28T12:05:45.394Z"
}

Análisis de la respuesta:

  • Código 201 Created: Indica que el servidor ha creado un nuevo recurso.
  • Cuerpo de la respuesta: Contiene los datos que enviaste (el nombre y el trabajo del usuario), además de un identificador único generado por el servidor (id: «75») y una marca de tiempo (createdAt) que indica cuándo se creó el recurso.

5.3. Actualizar un usuario con PUT

El método PUT se utiliza para actualizar un recurso existente. En este caso, vas a modificar los detalles de un usuario con id=2.

Ejemplo de CURL:

curl -X PUT -H "Content-Type: application/json" -d '{"name": "morpheus", "job": "zion resident"}' https://reqres.in/api/users/2

Explicación del comando:

  • -X PUT: Especifica que estás utilizando el método PUT para actualizar un recurso.
  • -H "Content-Type: application/json": Define que el tipo de contenido enviado es JSON.
  • -d '{"name": "morpheus", "job": "zion resident"}': Especifica los datos que estás actualizando, en este caso, cambiando el trabajo del usuario a «zion resident».
  • https://reqres.in/api/users/2: Es la URL de la API para actualizar el usuario con id=2.

Respuesta esperada:
La respuesta normalmente incluirá un código 200 OK, lo que significa que el recurso ha sido actualizado correctamente. Aquí tienes la respuesta simulada completa:

Encabezados de la respuesta:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 145
Date: Sun, 28 Sep 2023 12:10:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

{
  "name": "morpheus",
  "job": "zion resident",
  "updatedAt": "2023-09-28T12:10:45.394Z"
}

Análisis de la respuesta:

  • Código 200 OK: Indica que la actualización fue exitosa.
  • Cuerpo de la respuesta: Contiene los datos actualizados (nombre y trabajo) junto con una marca de tiempo (updatedAt) que indica cuándo se realizó la modificación.

5.4. Eliminar un usuario con DELETE
El método DELETE se utiliza para eliminar un recurso. En este caso, vas a eliminar al usuario con id=2.

Ejemplo de CURL:

curl -X DELETE https://reqres.in/api/users/2

Explicación del comando:

  • -X DELETE: Especifica que estás utilizando el método DELETE.
  • https://reqres.in/api/users/2: Es la URL de la API para eliminar al usuario con id=2.

Respuesta esperada:
La respuesta típica incluirá el código 204 No Content, lo que significa que el recurso ha sido eliminado exitosamente. Aquí tienes la respuesta simulada completa:

Encabezados de la respuesta:

HTTP/1.1 204 No Content
Date: Sun, 28 Sep 2023 12:15:00 GMT
Connection: keep-alive

Cuerpo de la respuesta:

(No hay contenido)

Análisis de la respuesta:

  • Código 204 No Content: Indica que la operación fue exitosa, pero no se devuelve ningún contenido porque el recurso ha sido eliminado.
  • Cuerpo de la respuesta: No hay contenido en la respuesta, lo cual es esperado después de una eliminación.

Artículos que te pueden interesar