Last active
June 3, 2016 09:00
-
-
Save Dviejopomata/68c917415c0a756aec7a4759b164420b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//================================================================================================= | |
// el esquema es el siguiente: | |
// tenemos una aplicación web instalada en una máquina | |
// tenemos una aplicación api instalada en otra máquina | |
// tenemos módulos que se instalan via npm en la aplicación web y en el api (son los mismos módulos) | |
// en desarrollo trabajaremos solo con lo aplicación web y los modulos se instalarán localmente | |
// en producción los modulos los instalamos junto con el web api | |
// en producción tambien se podrían desplegar junto con la web | |
//================================================================================================= | |
/// ESTE ES EL FICHERO WEBAPI.TS que implementa un express simple que respondera dinamicamente a las | |
// rutas /:app/:bdd/:module/:submodulo/:procedimiento/:funcion | |
var express = require('express'); | |
var app = express(); | |
var process = require("process"); | |
var fs = require("fs"); | |
var http = require("http"); | |
// refresco del modulo | |
fs.watch('.', {encoding: 'buffer'}, (event, filename) => { | |
if (filename.endsWith(".js")) | |
{ | |
delete require.cache[require.resolve(`./${filename}`)] | |
console.log(filename); | |
} | |
}); | |
// get y/o post | |
app.use("/:app/:bdd/:module/:submodulo/:procedimiento/:funcion", function(req, res) | |
{ | |
try | |
{ | |
// invocación | |
var r = require("./"+req.params.procedimiento)[req.params.funcion](req.query); | |
res.send(r); | |
} | |
catch(e) | |
{ | |
res.send({error:""+e, parametros:JSON.stringify(req.params)}); | |
} | |
}) | |
app.listen(3001, function () { | |
console.log('Example app listening on port 3001!'); | |
}); | |
//================================================================================================= | |
// este es el fichero web desde donde se hace una llamada dinámicamente a procedimientos | |
// vis dos formas | |
// localAPI or webAPI | |
//================================================================================================= | |
var express = require('express'); | |
var app = express(); | |
var process = require("process"); | |
var fs = require("fs"); | |
var api = require("./api") | |
fs.watch('.', {encoding: 'buffer'}, (event, filename) => { | |
if (filename.endsWith(".js")) | |
{ | |
delete require.cache[require.resolve(`./${filename}`)] | |
console.log(filename); | |
} | |
}); | |
var ruta = "WEBAPI" | |
app.use("/:app/:bdd/:module/:submodulo/:procedimiento/:funcion", function(req, res) | |
{ | |
try | |
{ | |
if (ruta == "WEBAPI") | |
api.webApi(req.params.app, req.params.bdd, req.params.module, req.params.submodulo, req.params.procedimiento, req.params.funcion, req, res) | |
else | |
api.localApi(req.params.app, req.params.bdd, req.params.module, req.params.submodulo, req.params.procedimiento, req.params.funcion, req, res) | |
} | |
catch(e) | |
{ | |
res.send("el error " +e); | |
} | |
}) | |
app.listen(3000, function () { | |
console.log('Example app listening on port 3000!'); | |
}); | |
//======================================================================================= | |
// fichero que contiene las funciones WEBAPI o LOCALAPI | |
// ================== | |
var fs = require("fs"); | |
var http = require("http"); | |
var request = require('request'); | |
// se usa el modulo request para la cliente request al web api | |
export var webApi = (app, bdd, modulo, submodulo, procedimiento, funcion, req, res1) => | |
{ | |
var datos = {}; | |
request.post({url: `http://pc22072.suma.es:3001/${app}/${bdd}/${modulo}/${submodulo}/${procedimiento}/${funcion}`, formData: datos}, | |
function optionalCallback(err, res, body) { | |
if (err) { | |
res1.send({error:err}); | |
} | |
else | |
{ | |
res1.send(body); | |
} | |
}); | |
} | |
export var localApi = (app, bdd, modulo, submodulo, procedimiento, funcion, req, res) => | |
{ | |
var r = require("./"+procedimiento)[funcion](req.query); | |
res.send(r); | |
} | |
//==================================================== | |
// ejemplo de un `procedimiento llamado dinamicamente | |
// aquí es donde trabaja el programador | |
//==================================================== | |
"use strict"; | |
exports.f1 = (params) => { | |
// aquí irian los accesos a la base de datos | |
return { l: "11111111111111111111", "aa": params }; | |
}; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment