A) ¿API REST ? (Interfaz de programación de aplicaciones)

  API REST es un conjunto de principios arquitectónicos que se ajusta a las necesidades de las aplicaciones móviles y servicios web. Dado que son reglas y no un protocolo, la implementación de las recomendaciones depende de los desarrolladores.

  Dichos desarrolladores deben de ser capaces de admitir una independencia de las plataformas (Diferentes lenguajes de programación y S.O.), con protocolos estándar, con una estructura cliente/servidor web, y una evolución de los servicios, pudiendo crecer y agregar nuevas funcionalidades con independencia de las aplicaciones de los clientes.

  Cuando se envía una solicitud de datos (Front-end) a una API REST (Back-end), se suele hacer a través de un protocolo HTTP. Una vez que reciben la solicitud, pueden devolver mensajes en distintos formatos: HTML, XML, CSV y JSON. El formato preferido para los mensajes de la respuesta es JSON, puede tratarlo cualquier lenguaje de programación, es ligero y lo comprenden tanto las personas como los ordenadores.

   Los servicios web que implementan una arquitectura de REST son servicios web RESTful.

B) ¿ Una aplicación es RESTful ?

  Se considera que una aplicación es RESTful si cumple con seis pautas arquitectónicas:

  1. Una arquitectura cliente-servidor compuesta por clientes (Front-end), servidores y recursos (Back-end).
  2. Una comunicación cliente-servidor sin estado, la información siempre se almacena en el lado del cliente  (Front-end).
  3. Datos que pueden almacenarse en caché para eliminar la necesidad de algunas interacciones cliente-servidor.
  4. Una interfaz uniforme entre elementos para que la información se transfiera de forma estandarizada entre el cliente (Front-end) y los servidores (Back-end).
  5. Una restricción del sistema en capas, en el que las interacciones cliente-servidor pueden estar mediadas por capas jerárquicas.
  6. Código según se solicite, lo que permite que los servidores (Back-end) amplíen las funciones de un cliente (Front-end) al transferir el código ejecutable.