- ¿Qué es una base de datos? - noviembre 7, 2020
- ¿Es la programación una profesión para ti? - septiembre 3, 2020
- Temporada 2020-2021 - julio 15, 2020
Introducción
Vivimos en un mundo en el que negocios diferentes se integran para aumentar los servicios que ofrecen y, de esta forma, aumentar sus cuotas de mercado y así incrementar sus ingresos.
Está claro, ofreciendo más servicios a los clientes tendrás más posibilidades de conseguir los objetivos que te marques, y una opción, es integrarte con otros.
¿Cómo puedes aplicar ésto al desarrollo de software? Pues la respuesta la sabes, ¡integrándote con otros! Ofreciendo a otros desarrollos de software la posibilidad de integrarse con el tuyo e integrando en el tuyo otros desarrollos.
He dividido el artículo en dos entregas, una primera teórica en la que voy a explicarte qué es un web service, para posteriormente centrarme en explicarte qué es REST, ventajas y desventajas, cómo funciona… ¡La segunda entrega será totalmente práctica!
¿Web service?
Un servicio web es un sistema software sobre el que otros sistemas pueden ejecutar una serie de operaciones previamente conocidas, son accedidas mediante red (normalmente Internet) y ejecutadas en el sistema que las aloja.
Existen diferentes estilos de web services, a continuación te explico las más comunes:
- Remote Procedure Calls: Los servicios web basados en RPC presentan una interfaz de llamada a procedimientos y funciones distribuidas, están basados en la propia operación que se ejecuta. Es considerada la primera generación de web services, por lo que es un estilo muy extendido.
- Arquitectura Orientada a Servicios: Son servicios orientados a mensajes y que se implementan siguiendo los conceptos de la arquitectura SOA (próximamente escribiré un artículo sobre SOA).
- REST: Los servicios webs basados en REST intentan emular el protocolo HTTP, sustituyendo el interfaz por un conjunto conocido de operaciones estándar. Se centra en interactuar con recursos con estado, en lugar de basarse en operaciones o mensajes.
REST
REpresentational State Transfer
Lo primero que quiero que tengas claro es… ¿Qué es REST y qué no es REST?
REST es un estilo arquitectónico, es decir, cuando hablamos de REST no hablamos de un protocolo, no hablamos de una arquitectura software, no hablamos de un producto software ni hablamos de un estándar.
REST no es una tecnología que puedas adquirir ni una librería que puedas incluir en tus proyectos de desarrollo, es un estilo arquitectónico que atribuye toda la importancia a la información y la posiciona como elemento fundamental en la arquitectura del software que se quiere construir.
REST es el conjunto de principios que indican cómo los recursos son definidos y diseccionados en el diseño de arquitecturas en red.
Como te he dicho antes, REST no es un estándar, es un estilo de arquitectura, ¡pero está basado en estándares!:
- HTTP
- URL
- Representación de los recursos: XML/HTML/GIF/JPEG/…
- Tipos MIME: text/xml, text/html, …
Las propiedades subyacentes de los sistemas REST son:
- Rendimiento
- Escalabilidad
- Generalidad
- Simplicidad
- Facilidad de modificación y evolución
- Extensibilidad
¿Cómo funciona REST?
Antes de explicarte cómo funciona REST, tienes que tener claro qué es CRUD.
CRUD es el conjunto de operaciones básicas que puedes realizar contra una base de datos o contra la capa de persistencia del software.
- Create: Crear
- Read: Leer
- Update: Actualizar
- Delete: Borrar
Tal y como te decía al principio, REST emula HTTP, y en HTTP podemos encontrar una serie de métodos/verbos/acciones que se relacionan directamente con las operaciones CRUD. La relación entre los métodos de HTTP y CRUD es la siguiente:
- PUT: Create
- GET: Read
- POST: Update
- DELETE: Delete
El funcionamiento de REST se basa en la utilización de los métodos de HTTP sobre URIs. Una URI es un nombre lógico que separa la identidad del recurso sobre el que se quiere ejecutar la operación y lo que acepta o devuelve esa ejecución, es decir, identifican recursos. Por ejemplo, si quieres obtener la información de un recurso lo que tienes que hacer es formar la URI del recurso y enviar una invocación HTTP con el método GET, y te devolverá un JSON o XML con la información solicitada.
Método GET
Es el más utilizado en la web y su objetivo es transferir la información desde el servidor al cliente que realiza la petición. Lo más característico de GET es que no debe de modificar nada en el lado servidor, es decir, únicamente lleva a cabo operaciones de sólo lectura.
Método PUT
Es utilizado para crear nuevos recursos en el servidor, junto a la petición PUT se envían los datos a crear.
Método POST
El método POST se utiliza para actualizar la información de un recurso existente en el servidor.
Método DELETE
Es el método que debemos de utilizar para eliminar cualquier recurso en el servidor.
¡Veamos cómo se diseñan los servicios REST!
Diseñando servicios REST
A continuación voy a listarte los pasos que debes de seguir para diseñar un servicio REST de forma correcta:
- Identifica todas los recursos que quieres exponer en el servicio.
- Crea una URL para cada recurso. Recuerda que debes de utilizar nombres y no verbos o acciones.
- Indica qué operaciones están accesibles para cada uno de los recursos.
- Asegurate que las operaciones GET únicamente realizan operaciones de lectura.
- Crea la especificación de los datos de respuesta para cada uno de los servicios.
- Crea la documentación que describa como se tienen que invocar cada uno de los servicios.
Ventajas y desventajas
A continuación te indico las ventajas y desventajas de utilizar REST:
Ventajas:
- Consumo de recursos
- Fácil de construir y adoptar
- Notificaciones genéricas
- No hay enrutamiento a operaciones
- Creación explícita de instancias del proceso
Desventajas:
- Número de objetos
- Informalidad de las descripciones semánticas y sintácticas
- Manejo URIs
- Pocas herramientas de desarrollo
- No existen comunicaciones asíncronas
¡Próximos pasos!
En la segunda entrega sobre REST voy a explicarte lo siguiente:
- Creación de un web service REST utilizando Eclipse.
- Despliegue en Apache Tomcat.
- Utilización del servicio.
¡Te aconsejo que vayas pensando en un ejemplo para la siguiente entrega!
¡NO TE LA PIERDAS!