Qué es una Api Rest y Para Qué Sirve 【Guía 2020】

¿ Qué es una Api rest ?

Las siglas REST significan representational State Transfer o transferencia de estado representacional, y es un diseño arquitectónico web que lleva dominando internet desde hace ya casi 20 años. En la tesis doctoral de
Roy Fielding
sobre las diferentes arquitecturas basadas en red, Roy introdujo en el capítulo 5 su propia idea con una arquitectura que él denominó REST.
En este capítulo describe como se creó esta arquitectura a partir de una perspectiva de diseño denominada Null Style.
Esta perspectiva describe el inicio de un sistema como un set de restricciones vacío que hay que llenar y que una vez puestas
no pueden variar, donde no existen fronteras claras entre los componentes de nuestra arquitectura.
Roy se puso 6 restricciones en la arquitectura que son la base de la misma y que se mantienen hasta la fecha:

Stateful and Stateless Microservices Application Solutions - XenonStack
REST architectural styles - Hands-On RESTful Web Services with TypeScript 3
Software design principles for evolving architectures

La palabra API proviene de Application Programming Interface, es decir una interfaz que será accesible de forma programática que provee una serie de operaciones de un servicio, que un programa ejecutable externo podrá llamar (mediante funciones) sin que el programa sepa que hacen estas operaciones, solo como tratar los datos que esta interfaz devuelve.
Se suelen confundir con las bibliotecas, pero tienen la diferencia de que una biblioteca es el conjunto de clases y métodos que cumplen ciertas funciones ya implementadas, mientras que una API es la "ventana" (interfaz) que utiliza un ejecutable externo para comunicarse con estas clases y métodos.

Entonces una API REST sería una interfaz cuyas llamadas (peticiones) viajan por una red hacía servidores que aceptan estas peticiones.

¿Como funciona una API REST?

En el anterior punto se habló de las restricciones que se impuso Roy para la creación de su arquitectura web, pero no hemos hablado del propósito de la misma.
La arquitectura está diseñada para la manipulación y consulta de un modelo de datos por parte de un cliente a un servidor. ¿Y que es un modelo de datos?. Un modelo de datos es una abstracción del conjunto de recursos que maneja una organización. Y cualquier organización, lo crea o no, tiene un conjunto de recursos que puede convertir en un modelo de datos consultables y manejables. Para manejar este modelo de datos, la arquitectura habla de tratar recursos que identificará mediante URIs, que se traducirán a su representaciones en la arquitectura, para que puedan ser entendidas por la máquina.

Entities aren't resources, resources aren't representations · Los Techies

Resumiendo con un ejemplo:

La panadería de antes tiene dos colecciones de pan: hogazas y baguettes y cada colección tiene dos panes. Con un total de 4 recursos, un cliente tendría que realizar peticiones a sus URIs para poder obtener sus representaciones. Imaginándonos que el servidor que ofrece el servicio API tiene de nombre simbólico panaderia-api.com y procesa peticiones por HTTP, las URIs serían:

// URI de la coleccion de la hogaza, y de sus panes
http://panaderia-api.com/hogazas
http://panaderia-api.com/hogazas/1
http://panaderia-api.com/hogazas/2
// URI de la coleccion de baguettes, y de sus panes
http://panaderia-api.com/baguettes
http://panaderia-api.com/baguettes/1
http://panaderia-api.com/baguettes/2

Si nos fijamos, las colecciones también disponen de su identificación.

Al realizar peticiones GET sobre estas URIs, recibiríamos las siguientes representaciones:

// Representacion de la hogaza 1
{
idHogaza: 1,
peso: 300,
precio: 1.5,
fechaCreacion: '2020-12-06 10:30'
}
// Representacion de la hogaza 12
{
idHogaza: 2,
peso: 300
,
precio: 1.5,
fechaCreacion: '2020-12-06 10:30'
}
// Representacion de la baguette 1
{
idBaguette: 1
,
peso: 200
,
precio: 1,
fechaCreacion: '2020-12-06 11:30'
}
// Representacion de la baguette 2
{
idBaguette: 2,
peso: 300
,
precio: 1,
fechaCreacion: '2020-12-06 11:30'
}
// Representación de la coleccion de hogazas
{
hogazas: [
'http://panaderia-api.com/hogazas/1',
'http://panaderia-api.com/hogazas/2'
]
}
// Representación de la coleccion de baguettes
{
baguettes: [
'http://panaderia-api.com/baguettes/1',
'http://panaderia-api.com/baguettes/2'
]
}

Se puede observar que pese a que todas las hogazas tienen la misma masa y fecha de creación, se diferencian en el identificador.

También hay que fijarse que se pueden obtener representaciones de las colecciones. Estas representaciones se componen de una lista de todas las URIs de los recursos en esa colección.

¿Por qué esto es importante para mi negocio?

Tras tener los anteriores conceptos claros sobre lo que es una API REST y como funciona, se hablará sobre por qué está tan implementada en Internet, y como sacar provecho de ella.

Como se dijo anteriormente, esta arquitectura está pensada para la consulta y manipulación de datos (recursos) por red mediante operaciones CRUD.

Cualquier negocio podría tener una API REST para que gente de todas partes de internet pueda acceder a sus recursos, pero lo primero que hay que preguntarse es ¿alguien necesita acceder a ellos?.

Tanto una empresa que se dedica a recolectar a mediciones del tiempo que hace en todo el mundo, como la panadería anteriormente planteada tienen datos que esta arquitectura puede manejar, sin embargo ambas plantearían su uso de maneras distintas.

Una empresa de medir el tiempo puede ofrecer sus mediciones mediante esta arquitectura para facilitar su acceso lo que aumentaría su visibilidad, mientras que una panadería lo que podría buscar es que sus clientes habituales se puedan registrar en un portal online para recibir ofertas sobre los panes que vende.

Ambas empresas utilizan REST, pero una lo utiliza para mostrar datos de forma global, mientras que otra la utiliza para generar datos (clientes) en su propio modelo de datos. Con propósitos diferentes como visibilidad y retención de clientes pero la misma base, la misma arquitectura.

Como conclusión podemos sacar que todas las empresas pueden sacar provecho de una API REST de sus datos siempre y cuando alguien este dispuesto a acceder a ellos.

Implementaciones de una API REST

Hay muchos frameworks que te permiten implementar servidores API REST desde 0, tales como JAX-RS y Spring Boot que utilizan anotaciones de Java, Django disponible en Python, Laravel si lo quieres hacer en PHP o Restify para implementarlo en Node.js.

Mi recomendación personal sería Spring Boot para Java, lleva mucho tiempo en desarrollo y siguen actualizando el framework a día de hoy. Spring Boot además permite implementarle capas de persistencia de datos como Hibernate, que añadirán más modularidad y sencillez a la comunicación con la capa de datos en la base de datos que quieras implementar.

Si queréis empezar desde 0 recomiendo elegir vuestro editor de código más utilizado (en mi caso sería IntelliJ, la versión de la comunidad gratuita es muy completa) y seguir este tutorial que os guiará paso por paso como implementar una.

Ejemplos de API REST:


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *