¿Qué es un API Restful?

Un API Restful también es considerado como un servicio web basado en REST (representational state transfer), es un estilo de arquitectura de software que está diseñado para tomar ventaja de los actuales protocolos, aunque puede ser utilizado con casi cualquier protocolo, este es utilizado mayormente en HTTP.

Un API puede ser considerado Restful si tiene las siguientes características:


Client-sever:
El cliente-sevidor trabaja bajo el concepto que el cliente y el servidor deben de trabajar por separado. El cliente maneja la parte de front end, el servidor maneja la parte de back end. Esto quiere decir que si yo realizara cambio en mi aplicación web esto no afectaría la estructura o el diseño de la base de datos. 

El cliente-sevidor trabaja bajo el concepto que el cliente y el servidor deben de trabajar por separado. El cliente maneja la parte de front end, el servidor maneja la parte de back end. Esto quiere decir que si yo realizara cambio en mi aplicación web esto no afectaría la estructura o el diseño de la base de datos. 


Stateless:
El API se maneja sin estados, esto quiere decir que las llamadas se pueden realizar independiente uno de otro, y que cada llamada contiene toda la información necesaria para completarse por sí misma satisfactoriamente. El API no tiene que depender de información almacenada en el servidor o en sesiones para determinar que se tiene que hacer con esa llamada.


Cache:
Ya que un API Restful es Statelees esto puede incrementar el manejo de conjuntos grandes de información en las llamadas, esta API deberá estar diseñada para almacenar datos en cache. Esto significa que cuando la información es guarda en cache, la respuesta deberá indicar que la información solo se entra en memoria por un periodo de tiempo. Teniendo esto en su API le dará acceso a sus clientes con herramientas necesarias que serán de rápido acceso, por lo tanto, tendrá aplicaciones más eficientes.


¿En que consiste un API Restful?
Un Restful API es una aplicación que usa el protocolo HTTP, por lo que el cliente tiene acceso a la información del servidor a través de HTTP requests como lo son: 

  • GET - Se utiliza para obtener datos. 
  • POST - Es para ingresar datos.
  • PUT - Es para actualizar los datos necesarios. 
  • DELETE - Es para hacer una eliminación de datos.


Ejemplo:
hunabku.com.mx/api/proyectos

hunabku.com.mx -> dominio

/api/ -> representar que es que estamos en un directorio con servicios restful (es una recomendación)

/proyectos -> nuestro recurso


GET
Obtener todos los proyectos:

                REQUEST:
                GET /api/proyectos

                RESPONSE:
                [
                { id: 1, nombre: '' }

                { id: 2, nombre: '' }

                { id: 3, nombre: '' }
                ...
                ]

Obtener solo un proyecto:

                  REQUEST:
                  GET /api/proyectos/2

                  RESPONSE:
                  [
                      { id: 2, nombre: '' }
                  ]


POST
Ingresar un proyecto:

                  REQUEST:
                  POST /api/proyectos
                  { nombre: '' }


PUT
Actualizar un proyecto:

                  REQUEST:
                  PUT /api/proyectos/{id}
                  { nombre: '' }


DELETE
Eliminar un proyecto:

                  REQUEST:
                  DELETE /api/proyectos/{id}