Antes de seguir con la parte practica vamos con un poco de teoría
¿que es una api?
API es el acrónimo en ingles de Application Programming Interface al español se traduce interfaz de programación de aplicaciones y en términos sencillos podemos decir que las APIs son programas que permiten que otros programas se comunique con ellas, esta comunicación se lleva a cabo a través de respuestas (Response) y peticiones (Request), el programa que se conecta a una API se le conoce como cliente o clientes ya que una API puede tener mas de un cliente.
¿QUE SIGNIFICA REST?
REST es el acrónimo de REpresentational State Transfer al español se traduce Transferencia de estado representacional suena un poco complicado se trata de es una arquitectura de desarrollo web, y como toda arquitectura cuenta con una pautas o restricciones en su uso.
Restricciones Arquitectónicas REST
En total son 6 restricciones las cuales explicare a continuación.
CLIENT-SERVER (cliente y servidor)
Debe existir una separación de responsabilidades entre el cliente y el servidor, con lo cual la unión entre estos debe ser mediante la interfaz uniforme, así el cliente no necesita saber nada sobre lógica empresarial y el servidor no necesita saber nada sobre la interfaz de usuario frontend.
stateless (Peticiones sin estado)
El servidor no debe almacenar estados sobre la sesión del cliente en el lado del servidor. El cliente es responsable de almacenar y manejar la información relacionada con la sesión por su propia cuenta, con lo cual debe proporcionar credenciales de autenticación con cada solicitud http que le hace al servidor.
Cacheable
Para proporcionar un mejor rendimiento, usualmente, las aplicaciones se pueden almacenar caché en el cliente de forma implícita, explicita y/o negociable. Si una respuesta del servidor define el contenido como almacenable en caché, el cliente puede utilizar de nuevo los datos almacenados en cache para evitar conexiones que aumenten en exceso el consumo de recursos del servidor.
uniform interfaz (Interfaz uniforme)
Aquí yace la diferencia entre una API REST y una API no REST. Ya que debe haber una forma uniforme de interactuar con un servidor determinado, independientemente del dispositivo o tipo de aplicación.
layered system (Sistema de Capas)
Una API REST debe estar compuesta por varias capas, esto ayuda a mejorar la seguridad de la aplicación al ocultar múltiples bases de datos back-end y servicios adicionales, ya que cada capa no pueden interactuar más allá de la siguiente capa inmediata y puede haber muchos servidores intermedios entre el cliente y el servidor final. Los servidores intermediarios pueden mejorar la disponibilidad del sistema al permitir el equilibrio de carga y al proporcionar cachés compartidos.
code-on-demand (Código bajo demanda) opcional
El servidor puede extender temporalmente las funcionalidades del cliente mediante la transferencia de lógica empresarial pre-implementada al descargar y ejecutar Javascript y/o plugin por el lado del cliente, así puede seguir cumpliendo con las restricciones REST.
La comunicación entre cliente y servidor no debe ser necesariamente a través del protocolo HTTP ya que la especificación REST no definen que deba ser así, pero en nuestro caso vamos a desarrollar una API RESTful, y se le define así, porque además de utilizar las restricciones antes mencionadas, vamos a ocupar como interfaz uniforme el protocolo HTTP, la cual implementa métodos necesarios para manipular los diferentes recursos que conforman la API.
UNA API RESTfull Al realizar una petición al servidor debe poder identificar los recursos que esta buscando al utilizar los estándares HTTP, por ejemplo si realiza una petición GET esto significa que desea recuperar datos sobre el recurso identificado por la URI.
Los principales métodos utilizados por el protocolo HTTP.
- POST: crea un recurso nuevo.
- PUT: modifica un recurso existente.
- GET: recupera datos de un recurso.
- DELETE: elimina un recurso determinado.
- PATCH: modifica solamente un atributo de un recurso determinado.