rest_web - MutakamwoyoCloud/MCloud GitHub Wiki
Dependencias:
- ExpressJS
- fs de node
Clase principal del back-end de la aplicación, en ella se encuentra el punto de entrada del motor node, y manejaremos todo lo relacionado con la infraestructura web, ayudándonos para ello de la librería Express.
Es responsable de la creación de los demás módulos, pero sobre todo el módulo principal (petitionhandler.js) antes de ponerse a la escucha de peticiones, para ello realiza una carga del código de los demás basándose en un archivo de configuración que se utiliza para parametrizar la parte cliente en función de sus necesidades:
const app = express();
var ph = require('./PetitionHandler');
var ftpw = require('./FTPwrapper');
var tools = require('./utils');
var config = require('../../config.json')
console.log(config);
var petition_handler = new ph(config.packet_limit);
ftpw.init(petition_handler, config.provider);
app.set('port', (process.env.PORT || 3001));
app.use(bodyParser.json());
if (process.env.NODE_ENV === 'production') {
app.use(express.static('client/build'));
}
Express nos permite con sus métodos, manejar un servidor que responda a peticiones web, en MCloud hemos creado una interfaz minimalista que reciba las peticiones de la parte GUI e interactúe con el core. A continuación exponemos un ejemplo de uso que describe a grandes rasgos la manera que tenemos de responder las peticiones por parte del cliente.
En server.js podemos escribir todo lo relacionado con la web API de una forma sencilla, una forma de hacer que nuestra aplicación respondiera a la petición get de nuestra aplicacion en la ruta /api sería:
const express = require('express');
const app = express();
app.get('/api', (req, res) => {
alert("Ejemplo de llamada");
});
req es un objeto que contiene información sobre las peticiones HTTP generadas en ese evento, res. Es el objeto que se va a construir en respuesta a esa petición.
A continuación, vamos a enumerar los distintos puntos que tiene el servidor para contestar a las peticiones:
##### Puntos de entrada del servidor: ###### SearchEsta función se dedica a interactuar con el módulo principal del core para enviarle una petición de búsqueda.
- Type: POST
- json:
{search : "búsqueda", num : "modulo" }
app.get('/api/search', (req, res, next) => { code });
Esta función interactúa con el módulo principal para que envíe una petición y la procese:
- Type: POST
- json:
{search : "búsqueda", num : "modulo" }
app.post('/api/form', (req, res) => { code });
También tenemos entradas para probar las funcionalidades de MCloud o arreglar fallos en el que caso de que ocurrieran, estas distintas llamadas del formato /api/llamada interactúan con las principales funciones del módulo de comunicación:
- /api/
* push: realiza una llamada push del protocolo de comunicación
* pull: realiza una llamada pull del protocolo de comunicación
* fetch: realiza una llamada fetch del protocolo de comunicación
* flush: realiza una llamada flush del protocolo de comunicación
* generate: genera una batería de peticiones de prueba
Son de tipo Get para su acceso a través de URL, sirven para comunicarse con el módulo principal de forma manual.