API REST Básica con Express.js — Parte I

thaisDev
7 min readAug 10, 2019

--

En este post te explicaré una serie de conceptos a tener en cuenta antes de meternos en faena.

[*] ¿Qué es una API?

API = Application Programming Interface

Definición Dura de Asimilar

Son interfaces para que los programas de sotfware se comuniquen entre ellos y compartan datos bajo ciertos estándares. El más usado es REST y el formato para envitar datos más usado es JSON.

¿Te has quedado igual eh?, bueno a mi lo que me funciona a la hora de entender y explicar por un lado, lo qué es una API y su funcionamiento es plantearme estas preguntas :

  • ¿Tu app tiene los datos a los que quieres acceder o necesitas de un medio externo para obtenerlos?
  • ¿Ese medio externo es una aplicación que te provee los datos que necesitas?

Entonces ese medio externo es una API y tú estás consumiendo/obteniendo sus datos a través de tu app para mostrarlos en pantalla 😊.

Un ejemplo quizás más claro :

Quieres desarrollar una app para consultar el clima en las distintas ciudades del mundo, pero … ¿cómo podemos saber qué clima hace en Londres? o en Tokio?, no hace falta que vayas a Tokio a medir la presión atmosférica porque toda la información que necesitas para desarrollar la app se encuentra recogida en una API, la cual está alojada en internet y tú simplemente te conectas a ella, recoges los datos que te interese mostrar y ya está. Estás consumiendo una API y usándola en tu app.

Si sigues como al principio, don’t worry be happy, a la hora de ponerte manos a la obra lo entenderás mejor.

[**] REST, ¿qué demonios es eso?

REST = Representational State Transfer

REST es una interfaz para conectar varios sistemas basados en el protocolo HTTP (uno de los protocolos más antiguos) y nos sirve para obtener y generar datos y operaciones, devolviendo esos datos en formatos muy específicos, como JSON.

Te dejo información más detallada por aquí +info REST

Algunos detallitos de REST :

  • Crea una petición HTTP que contiene toda la información necesaria, es decir, un REQUEST a un servidor tiene toda la información necesaria y solo espera una RESPONSE, ósea una respuesta en concreto.
  • Todos los objetos se manipulan mediante URI, por ejemplo, si queremos acceder a un usuario en concreto nuestra URI sería /user/2, al darle a ENTER esperaríamos que nos muestre en pantalla los detalles acerca del usuario con id=2.
  • Se apoya en los métodos básicos de HTTP(también conocidos como Verbos HTTP), como son:

GET (leer y consultar) — GET obtiene recursos, es similar a entrar en youtube.com y ver todos los vídeos en pantalla, porque le has dicho a Youtube “hey, quiero ver vídeos dámelos”. Las peticiones GET suelen tener esta pinta :

POST (crear) — POST tiene que ver con crear cosas, cosas como una cuenta en Youtube, te registras con tu email, contraseña,etc, Youtube te guarda en su Base de datos, te reconoce como usuario heredero/a al trono y ya puedes subir, guardar,etc.. todos esos vídeos que haces y te gusta ver. Las peticiones POST suelen tener esta pinta :

PUT/PATCH (actualizar)

Sí,existen 2 operaciones para actualizar, te voy a contar la que me enseñaron y la que he ido viendo a lo largo de varios post relacionados con el tema

PUT, se supone que está enviando la entidad completa, y esa entidad completa reemplaza cualquier entidad existente.

Por ejemplo :

Un señor me dice que quiere modificar ciertos datos de su perfil de usuario y me manda aquellos que le gustaría cambiar, estos son :

· Edad

· Email

Verás que he puesto “name”: ”Manolo” en la petición de actualización a pesar de que el señor no me ha dicho que lo modificara, esto es porque a PUT se le deben indiciar todos los datos independientemente de si se van a cambiar o no.

Una diferencia entre las solicitudes POST Y las operaciones de actualización de los datos como PUT Y PATCH es que, POST crea un nuevo recurso dentro de una colección, por ejemplo :

En cambio cuando se solicita cambiar un dato o un conjunto de ellos, en la URI se especifica el individuo al que se van a aplicar esos cambios. Por tanto debemos identificar primero el recurso, por lo que iremos a buscarlo y si lo encontramos le aplicamos los cambios que nos han pedido.

PATCH, modificará solamente aquellos datos que se envien dejando el resto tal y como están en el servidor.

Por ejemplo,

Una señora me solicita que por favor cambie únicamente la dirección de email que tiene en su perfil de usuario, si empleamos PATCH para esta operación, solamente modificaremos el email, dejando el resto de datos tal y como estaban.

PATCH solo actualiza los campos que se proporcionaron

Tú :

Yo :

Bueno sigamos …

Tú :

Vamos a ver, Thais … la única diferencia que he visto es que me dices que con PUT debo indicar todos los atributos independientemente de si estos cambian o no y con PATCH no hace falta mandarle todos, solamente el que quiero cambiar y ya está?, pero …entonces yo puedo usar PUT para mandar un único atributo que da igual porque va a cambiar únicamente ese y el resto lo deja igual no?

He aquí querido ser de luz y de color el dilema con estos 2 métodos HTTP, sí puedes usar PUT para eso, peeeeeeeeero no sería lo correcto digamoslo así, ambos están diseñados para un fin, es por ello que su empleo radica en algo más bien subjetivo.

En cuanto al PUT, yo misma he realizado eso que preguntas y he comprobado que únicamente modifica el valor del campo que le mandé, dejando el resto de campos intactos, es decir, no se han visto afectados.

Como me dijeron a mi una vez, el que hace la API pone las normas, así que si a la hora de escoger un método HTTP para actualizar te decantas por uno o por otro, es tu elección, pero si como yo sigues teniendo tus dudas al respecto te dejo un link (que está traducido del post original en inglés un poco como el cule pero bueno si quieres la versión en inglés toda tuya) que puede aclarar un poco esta diferencia tan polémica.

DELETE (borrar) — DELETE tiene que ver con eso … borrar algo, o a alguien, jeje.

Al igual que ocurre cuando queremos actualizar datos, para borrar se emplea la misma dinámica, localizar el objetivo y en este caso, ELIMINARLO 😈.

Estos son los más importantes, existen muchos más los cuales no vamos a ver en este post, pero si te has quedado con dudas o quieres saber más acerca de los métodos HTTP te lo dejo aquí.

[***] ¿Qué coño es Express.js?

Es un framework de Node.js, que nos ofrece montar aplicaciones web en un período de tiempo relativamente corto y que además es fácil de usar, si no conoces a Node.js te invito a que le eches un ojo a esta pequeña demo antes de pasar a la acción.

Y hasta aquí el post, en el siguiente crearemos una API REST de juegos paso a paso en su forma más básica, si tienes alguna sugerencia, consejo o quieres corregir algo que hayas visto que no es del todo correcto,por favor 🙏hazmelo saber, estaré encantada de poder contrastar información y rectificarla.

Pasa un buen día, tarde, noche 🤘🤘

Bibliografía

[**] ¿What is REST?- EN

[**] ¿Wha is REST?- ES

[**] HTTP Methods

[**] PUT VS PATCH con ejemplos reales — ES

[**] PUT VS PATCH con ejemplos reales — EN

[***] ¿Qué coño es Express.js?

--

--

thaisDev

Junior Developer #Laravel #Node #MySQL #React (react y yo estamos pasito a pasito) , me gusta compartir todo lo que aprendo!