Skip to content

2 HTTP Methods

Los métodos HTTP más comunes usados son el método GET, el método POST, el método PUT, el método PATCH y el método DELETE.

Estos métodos indican al servidor que tipo de operación hay que realizar enviando a través del cuerpo del request y de los parámetros de un url información a usar.

Los métodos HTTP tienen una relación semántica directa con las operaciones CRUD (Create, Read, Update, Delete).

Para poder realizar conexiones a un servidor, haciendo uso de estos métodos, se puede usar el método fetch de Javascript.

Método GET

El método GET es usado para recibir información y obtener información del servidor usando la url dada. Se considera que dicho método es una operación de lectura (R).

Obtenemos todos los elementos del servidor:

fetch('https://jsonplaceholder.typicode.com/todos/')
    .then(response => response.json())
    .then(data => console.log(data))

Si no se le indica un método específico, se usa como defecto el método GET.

Método POST

El método POST es usado para enviar información (data) al servidor como un fichero, datos, o añadir una nueva fila al final de una tabla. Se podría decir, que este método es usado para añadir nuevos items al servidor. Se puede considera a este método como una operación de creación (C).

Para crear un nuevo usuario:

fetch('https://jsonplaceholder.typicode.com/todos/', {
    method: 'POST',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify({
        userId: 6,
        id: 300,
        title: "Learn fetch api",
        completed: false
    })
})
    .then(response => response.json())
    .then(data => console.log(data))

Note

Ten en cuenta que al realizar el POST ha sido necesario pasarle un header y un body. El body contiene la información que le enviamos al servidor, mientras que el header contiene en que lenguaje/formato es enviado.

Método PUT

El método PUT es usado para actualizar un resource. Si la fuente esta identificada se intenta localizarla, de tal forma que si es un resource existente se actualice, y por el contrario se cree una nueva.

Para actualizar el usuario creado actualmente:

fetch('https://jsonplaceholder.typicode.com/todos/6', {
    method: 'PUT',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify({
        userId: 1,
        id: 5,
        title: "hello fetch api",
        completed: false
    })
})
    .then(response => response.json())
    .then(data => console.log(data))

Método PATCH

El método PATCH es usado para actualizar las propiedades de un resource

Para modificar la propiedad title y complete:

fetch('https://jsonplaceholder.typicode.com/todos/6', {
    method: 'PATCH',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify({
        title: "we are going to learn patch method",
        completed: true
    })
})
    .then(response => response.json())
    .then(data => console.log(data))

Método DELETE

El método DELETE es usado para eliminar un resource especificado en la URL:

Para eliminar el usuario creado:

fetch('https://jsonplaceholder.typicode.com/todos/6', {
    method: 'DELETE',
})
    .then(response => response.json())
    .then(data => console.log(data))

Realizar petición

Para poder realizar requests en Node JS, podemos usar la API Fetch como en los ejemplos anteriores. El problema es que ésta es una API reciente y versiones antigua de Node JS no la incorpora.

El módulo http trae consigo el método request() para poder realizar peticiones a un servidor y trabajar con ellos, además recibe los siguientes parámetros:

  • url del servidor donde se va a realizar la petición.
  • options es un parámetro opcional que contiene información o datos relevantes del request, como por ejemplo los headers, o el método (por defecto es GET).
  • callback que se realizará cuando termine la petición.
const http = require('node:http')

// GET

const get = http.request("https://jsonplaceholder.typicode.com/todos/", {
    method: 'GET'
}, (res) => {
    console.log("GET realizado")
}).end()

// POST 
const post = http.request("https://jsonplaceholder.typicode.com/todos/", {
    method: 'POST',
    headers: { 'content-type': 'application/json' },
}, (res) => {
    console.log("GET realizado")
})

post.write(JSON.stringify({
    userId: 6,
    id: 300,
    title: "Learn fetch api",
    completed: false
}))

post.end()

Axios

También existe la librería axios y express compatible con versiones antiguas del NodeJS y que permiten realizar tanto peticiones como respuestas

HTTP status codes

Los códigos de estado HTTP nos dan información de como ha ido la comunicación con el servidor. Los códigos están formados por tres dígitos, el primer dígito indica a que grupo pertenece mientras que los otros dos nos indican una información más específica sobre el estado.

  • 1XX Respuestas informativas: Esta respuesta significa que el servidor ha recibido los encabezados de la petición, y que el cliente debe proceder a enviar el cuerpo de la mista.
  • 2XX Peticiones correctas: Esta clase de código de estado indica que la petición fue recibida, entendida y aceptada correctamente.
  • 3xx Redirecciones: El cliente tiene que tomar una acción adicional para completar la petición. La acción requerida puede ser llevada a cabo por el agente de usuario sin interacción con el usuario si y solo si el método utilizado en la segunda petición es GET o HEAD. El agente de usuario no debe redirigir automáticamente una petición más de 5 veces, dado que tal funcionamiento indica usualmente un Bucle infinito.
  • 4XX Errores del cliente: La solicitud contiene sintaxis incorrecta o no puede procesarse. La intención de la clase de códigos de respuesta 4xx es para casos en los cuales el cliente parece haber errado la petición.
  • 5XX Errores del servidor: El servidor falló al completar una solicitud aparentemente válida. Los códigos de respuesta que comienzan con el dígito "5" indican casos en los cuales el servidor tiene registrado aún antes de servir la solicitud, que está errado o es incapaz de ejecutar la petición.

Ahora veamos en profundidad las peticiones más típicas:

  • 200 - OK:Petición resulta de forma correcta sin ningún inconveniente.
  • 301 - Moved Permanently: Se ha realizado la conexión correctamente pero el recurso solicitado ha sido movido de forma permanente.
  • 400 - Bad Request: Se ha realizado la petición con información incorrecta.
  • 404 - Not Found: No se encuentra la información solicitada.
  • 500 - Internal Server Error: Error del servidor

Info

Para conocer más específicamente los tipos de estados que hay puede visitar la siguiente página:

https://www.restapitutorial.com/httpstatuscodes.html

También existe una versión con gatos:

https://http.cat/

Además, existen diferentes librerías que almacenan en constantes los valores de los status code, una de ellas sería:

https://www.npmjs.com/package/http-status-codes