UNPKG

tadicl-p2

Version:

Servidor Node capaz de tratar peticiones REST y que implementa uso de cache con tiempo establecido

80 lines (67 loc) 4.21 kB
//Modulo servidor.js var http = require("http"); //Requiere el modulo http y url (para coger la url escrita por el usuario). Asignamos el resultado del requerimiento a una variable local... var url = require("url"); var qs = require("querystring"); //Requiere este modulo para parsear el body y obtener las variables y sus valores cuando el request.method, por ejemplo, es POST function iniciar(route, handle, cache) { function onRequest(request, response) { //Tratamiento de Peticiones REST (POST, GET, PUT, DELETE) if (request.method === "POST") { var body = ""; request.setEncoding('utf8'); // change to UFT8 encoding request.on("data", function(data) { body += data; //Recibimos datos y guardamos en el body para su posterior parseo }); //Cuando las variables "POST" son totalmente recibidas, request.on("end",function(){}) es ejecutado. request.on("end", function() { var variables = qs.parse(body); //Obtengo las variables del formulario introducido mediante ARC. }); var pathname = url.parse(request.url).pathname; //Parseamos el string de la url.... //Trazas y insercion en cache console.log("********************************************************"); //Seguimos traza por consola console.log("- Se ha hecho una peticion por POST a " + pathname); //Seguimos traza por consola cache.insertar("POST", "datos de POST", 15000); //indice+datos+tiempo de expiracion console.log('- Elementos en la cache: ' + cache.size() + " elementos."); } else if (request.method === "GET") { var pathname = url.parse(request.url).pathname; //Parseamos el string de la url.... //Trazas y insercion en cache console.log("********************************************************"); //Seguimos traza por consola console.log("- Se ha hecho una peticion por GET a " + pathname); //Seguimos traza por consola cache.insertar("GET", "datos de GET", 15000); console.log('- Elementos en la cache: ' + cache.size() + " elementos."); } else if (request.method === "PUT") { var pathname = url.parse(request.url).pathname; //Parseamos el string de la url.... //Trazas y insercion en cache console.log("********************************************************"); //Seguimos traza por consola console.log("- Se ha hecho una peticion por PUT a " + pathname); //Seguimos traza por consola cache.insertar("PUT", "datos de PUT", 15000); console.log('- Elementos en la cache: ' + cache.size() + " elementos."); } else if (request.method === "DELETE") { var pathname = url.parse(request.url).pathname; //Parseamos el string de la url.... //Trazas y insercion en cache console.log("********************************************************"); //Seguimos traza por consola console.log("- Se ha hecho una peticion por DELETE a " + pathname); //Seguimos traza por consola cache.insertar("DELETE", "datos de DELETE", 15000); console.log('- Elementos en la cache: ' + cache.size() + " elementos."); } else { console.log("- Request de otro tipo..."); var pathname = url.parse(request.url).pathname; //Parseamos el string de la url.... } //Una vez tenemos el pathname... response.writeHead(200, {"Content-Type": "text/html"}); //Tipo de contenido var content = route(handle, pathname); //Mandamos coleccion de manipuladores y el string parseado... response.write(content); //Escribimos contenido... response.end(); //Fin } http.createServer(onRequest).listen(5678); //Creamos el server indicando el puerto de escucha: 5678 y recibimos peticion... console.log("- El servidor esta iniciado"); //Seguimos traza por consola } //Exports exports.iniciar = iniciar;