Introducción a Eve : A RESTful Web API

eve-sidebarActualmente  estamos inmersos en un mundo lleno de aplicaciones móviles, redes sociales, blogs… todas ellas  con la necesidad de consultar datos de manera remota. La mayoría de estos  datos están expuestos en servicios web para que sea consumidos. En esta entrada del blog vamos a hablar de esto precisamente, la creación de una API Restful con EVE que pueda ser consumida por aplicaciones.

EVE es un framework para la creación de servicios web de tipo RestFul que proporciona una robusta implementación y con muchas características que hará mas fácil la creación de tu propia API Restful. Comenzamos…

Instalación de EVE:

Instalar EVE es muy sencillo, recomendamos instalar la versión de desarrollo ya que es la que contiene los últimos cambios y actualizaciones disponibles, para ello ejecutaremos el siguiente comando:

Como base de datos para guardar nuestros datos vamos a usar MongoDb que es una base de datos NOSQL. Los siguientes comandos son para realizar la instalación en Ubuntu pero si tenéis otro sistema operativo podéis consultar esta web que contiene documentación para la instalación en otros entornos.

Destacar que EVE esta implementada en Python y será el lenguaje a usar para desarrollar cualquier API en EVE.

Como ejemplo vamos a crearnos una API que maneje una agenda de contactos.

Primero vamos a crear la aplicación EVE, para ello creamos un archivo llamado agenda.py  y escribimos las siguientes líneas de código:

¡Tan solo necesitamos estas líneas código para que nuestra aplicación EVE pueda ser ejecutada!

Ahora vamos configurar la estructura que tendrán los datos de nuestra agenda, para ello creamos un archivo llamado settings.py y escribimos las siguientes lineas de código:

Este es el archivo de configuración de EVE y lo que estamos indicando es que nuestra API va  a tener un recurso llamado agenda.

En este momento tenemos todo listo para ejecutar nuestra API, para ello ejecutamos el siguiente comando:

Una vez ejecutada  podemos consumirla:

Como vemos tenemos una respuesta positiva  del servidor y si consultamos el payload devuelto observamos lo siguiente:

El recurso agenda de la API esta disponible desde el punto de entrada a la API. Si realizamos ahora las siguiente consulta:

La API nos responde con todos los datos de la agenda disponibles en la propiedad _items, en este caso no hay ninguno. Nos indica ademas el recurso donde nos encontramos “agenda” y el padre que sería la raiz de la API.

Necesitaremos que nuestros contactos de la agenda puedan ser almacenados, para ello vamos a configurar la base de datos.

Editamos el fichero settings.py y añadimos la configuración de nuestra base de datos:

Por defecto las APIs creadas con EVE son de solo lectura. Vamos a añadir a nuestro servicio de agenda mas potencia permitiendo el total de las operaciones CRUD.

RESOURCE_METHODS lista todos los métodos permitidos en el endpoint de recursos /agenda

ITEM_METHODS lista los métodos permitidos en los endpoints de artículos /agenda/<object_id>

Vamos a definir que datos vamos a guardar de nuestros contactos, para ello nos crearemos un schema dentro del fichero de configuración settings.py:

Ahora que tenemos definidos los datos que vamos a guardar y sus validaciones vamos a terminar de configurar el recurso agenda:

Simplemente le hemos añadido un título al recurso, se ha añadido un endpoint específico para el campo lastname y se ha indicado que los dos únicos métodos permitidos serán GET y POST.

Finalmente actualizamos la definición del dominio:

Cada vez que se hacen cambios en el fichero settings.py hay que volver a lanzar la aplicación EVE, para ello ejecuta el siguiente comando:

Ahora podemos añadir contactos a nuestra agenda mediante el método POST que hemos habilitado anteriormente (no necesariamente tenemos que introducir todos los datos, solo aquellos que por validación sean obligatorios)

Si ahora realizamos una consulta a la API mediante el endpoint /agenda/Appleseed

Vemos que nos devuelve el contacto cuyo lastname es Appleseed.

Hasta aquí hemos visto los primeros pasos para crear una sencilla API con EVE.

Eve tiene muchas mas funcionalidades que iremos descubriendo en sucesivas entradas.

Esperamos que esta introducción a EVE haya sido de vuestra ayuda.