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?
- Pues antes de nada, hay que instalar Node.js y npm (su gestor de paquetes).
- 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.
- Instalamos osprey-cli, el paquete de node que genera el API fake
- Abrimos el terminal o la consola de comandos
- Escribimos
-
npm install -g osprey-cli
- Si estas en linux o mac, y te da error, prueba anteponiendo el comando sudo
- Llamamos a nuestro fichero RAML “api.raml“
- Ejecutamos el siguiente comando
-
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.