REST
REST es una interfaz para conectar varios sistemas basados en el protocolo HTTP
y nos sirve para obtener y generar datos y
operaciones, devolviendo esos datos en
formatos muy específicos, como XML y
JSON.
REST se apoya en HTTP
Los verbos que utiliza son exactamente los
mismos, con ellos se puede hacer GET,
POST, PUT y DELETE.
Ver presentación: REST API
Para que una API sea considerada como REST debe superar las siguientes características arquitectónicas
● Uso de una interfaz uniforme
● Modelo Cliente-Servidor
● Operaciones sin estado
● Almacenamiento en caché
● Sistema de capas
● Código de baja demanda
Rest retorna código de status HTTP como respuesta. Los más conocidos son:
● 200: Ok
● 201: Creado
● 401: Sin autorización
● 403: Prohibido
● 404: Recurso no encontrado
● 500: Error de servidor
REST no es solo una moda, y es por las siguientes razones que esta interfaz está teniendo tanto protagonismo en los últimos años:
- Crea una petición HTTP que contiene toda la información necesaria, es decir, un REQUEST a un servidor que almacena esa información y solo espera una RESPONSE.
- Se apoya sobre un protocolo que es el que se utiliza para las páginas web, que es HTTP.
- Se apoya en los métodos básicos de HTTP,
como son:
○ Post: Para crear recursos nuevos.
○ Get: Para acceder a los distintos recursos.
○ Put: Para modificar. ○ Patch: Para modificaciones parciales. ○ Delete: Para borrar un recurso o un dato, por ejemplo de nuestra base de datos. - Todos los objetos se manipulan mediante URI
Esto quiere decir que nuestro servidor se puede desarrollar en Node y Express, y nuestra API REST con Vue por ejemplo, no tiene por qué estar todos dentro de uno mismo.
En la actualidad tiene una gran comunidad como proyecto en Github y en distintos lenguajes de programación.
Es totalmente independiente de la plataforma, así que podemos hacer uso de REST tanto en Windows, Linux, Mac o el sistema operativo que nosotros queramos.
Nos da escalabilidad, porque tenemos la separación de conceptos de
CLIENTE y SERVIDOR, por tanto, podemos dedicarnos exclusivamente a la
parte del servidor.
A la hora de ejecutar tu aplicación también tienes una flexibilidad mucho
mayor. Por las características de REST (principalmente no guardar estado)
es indiferente qué servidor atienda cada solicitud, pues es el propio cliente
el que tiene que mandar el estado al servidor.
La escalabilidad que aporta es gracias a una serie de
características que presenta la arquitectura REST:
◎ Es un protocolo sin estado, debido a que no se guarda la información
en el servidor. Es decir, toda la información será enviada por el
cliente en cada mensaje HTTP, consiguiendo un ahorro en variables
de sesión y almacenamiento interno del servidor.
◎ Presenta un conjunto de operaciones bien definidas, siendo las más
importantes GET, PUT, POST y DELETE, que se emplean en todos los
recursos.
◎ Utiliza URIs únicas siguiendo una sintaxis universal.
◎ Emplea hipermedios para representar la información, que suelen ser
HTML, XML o JSON.
- Podemos crear un diseño de un microservicio orientado a un dominio (DDD)
- Podemos hacer nuestra API pública, permitiendo el acceso a quien quiere hacer uso de nuestra API dándonos mayor visibilidad.
Muchas empresas como Twitter, Facebook, Google, Netflix, LinkedIn y miles de startups y empresas usan REST. Todos estas empresas y servicios tienen su API REST por un lado con su lógica de negocio y por otro lado su parte frontend, con lo cual nos permite centrarnos también un poco más en lo que es nuestra lógica de negocio haciendo una API REST potente.
- Cambiar el modo de pensar para los equipos de trabajo.
- Mayor tiempo de desarrollo porque hay que montar todo el sistema de la API.
- Requiere más conocimientos.
- Montar una infraestructura propia.
- Pueden presentarse circunstancias de mayor rigidez en el desarrollo y surgir situaciones de des-sincronización.
Ver presentación: