Muy a menudo, cuando implementamos una aplicación, una parte importante de su arquitectura será un API REST. Para poder paralelizar el desarrollo de la aplicación cliente (consumidora) y el API REST (servicio remoto), lo ideal será contar lo antes posible con un prototipo del API, interactivo y pseudo-funcional, que además nos sirva para validar la especificación de nuestro API. A este tipo de API, que devuelve datos dummy para testeo, se la conoce como API Mock o fake.

Actualmente existen numerosas formas de lograr esto, empleando distintas tecnologías y lenguajes.

¿Qué vamos a utilizar?

  • Node.js: plataforma y entorno de desarrollo, que utiliza el lenguaje Javascript para desarrollar aplicaciones, y especialmente indicado para la construcción de APIs RESTful.
  • RAML: Lenguaje de especificación de APIs. Si defines tu API con RAML (aunque existen otros, como Swagger y API Blueprint), podrás usar este fichero para generar otras cosas rápidamente, como el API fake para testing, generar documentación, una consola interactiva, pruebas con SoapUI… y todo con un único fichero.

¿Qué necesitamos?

  1. Pues antes de nada, hay que instalar Node.js y npm (su gestor de paquetes).
  2. Además, necesitamos redactar la especificación de nuestro API en un documento RAML. Si no lo conoces, aquí puedes aprender rápidamente.

_Nota: Si solo quieres probar esta técnica, puedes utilizar un fichero RAML de ejemplo de los numerosos que existen en Github o en la documentación de RAML. Por ejemplo éste extraído de la documentación de raml2html.

Guía rápida

Una vez que tenemos las cosas instaladas y hemos generado nuestro fichero RAML, podemos empezar.

  1. Instalamos osprey-cli, el paquete de node que genera el API fake
    1. Abrimos el terminal o la consola de comandos
    2. Escribimos
    3. npm install -g osprey-cli

    4. Si estas en linux o mac, y te da error, prueba anteponiendo el comando sudo
  2. Llamamos a nuestro fichero RAML “api.raml
  3. Ejecutamos el siguiente comando
    1. osprey new api.raml -name test -target test

Esto nos generará una carpeta test_ _con la estructura del proyecto. Para instalar las dependencias, vamos (usando el terminal) a la carpeta en la que se ha creado el fichero package.json y ejecutamos lo siguiente:

npm install

Igual que antes, si esto da error, pude ser que no tengamos permisos. Probad con “sudo npm install”;.

Ejecutar y probar

Una vez se han instalado las dependencias, podemos ejecutar y probar nuestra API.

En el terminal, vamos a test/src y ejecutamos

node app.js

En el terminal aparecerá un mensaje que nos indica que el servicio se ha arrancado correctamente y que estará escuchando en el puerto 3000.

Para probarlo, vamos al navegador y escribimos:

http://localhost:3000/api/console

O si lo prefieres, puedes atacar los endpoints que hayas definido en tu API directamente desde POSTman en la url http://localhost:3000/api/{tu_endpoint}

Cómo realizar cambios

Si te das cuenta de que necesitas hacer un cambio en tu API, puedes hacerlo fácilmente modificando el fichero RAML.

Para ello, ve a la carpeta test/src/assets/raml/api.raml , edítalo como necesites y guarda los cambios.

Detén el servidor de node pulsando  CTRL+C para liberar el puerto 3000, y ejecútalo de nuevo con el comando:

node app.js

Así de fácil. Ahora ya no hay excusa para no validar tu API sobre el terreno antes de ponerte a implementar.