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:
Además, existen diferentes librerías que almacenan en constantes los valores de los status code, una de ellas sería: