Guía rápida: generar un API mock con osprey-cli y RAML

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.

Leave a Reply

Your email address will not be published. Required fields are marked *