Bienvenido a la documentación de la API!¶
La documentación de la API está descrita en esta guía para su mejor comprensión. Se deberá documentar cada cambio o feature que se agregue al código para tener la última versión de la misma. La documentación se genera con la ayuda de la herramienta Sphinx, la cual se puede generar de la siguiente manera:
$ cd docs/sphinx
$ make html
Asegúrate de tener instalado el paquete make o build-essential y el paquete python3-sphinx.
Tecnologías Utilizadas¶
La API se basa en JavaScript como lenguaje de programación, ejecutado en el entorno de ejecución de Node.js y con Express como framework para crear una aplicación web escalable y segura. Seguimos el patrón de arquitectura Modelo-Vista-Controlador (MVC), lo que nos permite organizar nuestro código de manera modular y mantenible.
Como base de datos se utiliza MySQL y el ORM (Mapeador Objeto-Relacional) es Sequelize. Este ORM nos facilita la interacción con la base de datos relacional al proporcionar una capa de abstracción sobre SQL.
Estructura del proyecto¶
La estructura de la API se encuentra organizada en diferentes componentes:
1. Helpers: Aquí se encuentran funciones y utilidades compartidas que ayudan en varias partes de la aplicación, promoviendo la reutilización y la coherencia en todo el código. El único que se tiene se encarga de la autenticación básica de usuarios.
2. Config: Aquí se encuentran los archivos de configuración para que la aplicación funcione correctamente. Variables de configuración, conexión a la BD, configuración con S3 de AWS.
3. Controllers: Los controladores manejan las solicitudes entrantes y gestionan la lógica de negocio de nuestra aplicación. Estos actúan como intermediarios entre las solicitudes del cliente y la capa de servicios, procesando los datos y devolviendo las respuestas adecuadas.
4. Models: En este componente se definen los modelos de datos que representan la estructura y las relaciones de las entidades en nuestra aplicación. Se utiliza el ORM Sequelize para hacer cambios en nuesta BD mySQL.
5. Routes: Las rutas definen los puntos finales de la API y mapean las solicitudes HTTP entrantes a los controladores correspondientes. Aquí se especifican las URL y los métodos HTTP (GET, POST, PUT, DELETE) que nuestra API admite, junto con las funciones controladoras que se ejecutarán para cada solicitud.
6. Schedule: Este componente maneja las tareas programadas dentro de nuestra aplicación, como la ejecución de trabajos en segundo plano o la automatización de procesos recurrentes. Utilizamos herramientas como cron para programar y ejecutar estas tareas de manera eficiente. Lo utilizamos para que cada 30 segundos se consulte WebODM y para enviar vuelos planificados.
7. Services: Los servicios encapsulan la lógica de negocio de nuestra aplicación y se utilizan para interactuar con bases de datos, sistemas externos u otras fuentes de datos. Estos componentes promueven la cohesión y la separación de preocupaciones al aislar la lógica de negocio del resto de la aplicación. Tenemos 3, Weather Service (Servicio Meteorológico), ThingsBoard y el de authenticación.