No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

HTTP

17/31
Recursos

Aportes 64

Preguntas 13

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Este profe rifa鈥 Estas de acuerdo?

Mi forma de hacerlo : )

Node nos ofrece el modulo HTTP el cual nos permite principalmente crear un servidor en nuestro computador.
En este modulo encontraremos todo lo necesario que necesitamos para crear un sistema de rutas, que responder谩 cada ruta, los header que podr谩 mandar, etc.
Uno de los m茅todos principales de este modulo es createServer, el cual nos permitir谩 abrir un puerto para crear el servidor.

Para agregar utf-8 a las p谩ginas yo us茅 el siguiente c贸digo:

    w.writeHead(201, { 'content-type': 'text/html; charset=utf-8'})

w es el response (Solo que traigo la costumbre de Go de usar w para el response y r para el request)

utf-8 sirve para usar car谩cteres como las tildes, las 帽, las 驴 y otras cosas.

Complementario: Cuando un servidor HTTP le da una respuesta a un cliente le envia un status con informaci贸n de su petici贸n. Este status le indica al cliente que pas贸 con su petici贸n. Por ejemplo en el orden de los 200 significa que todo sali贸 bien y en el orden de los 400 significa que el cliente cometio un error al enviar la petici贸n (una ruta incorrecta, un permiso incorrecto). Esa es la raz贸n de que se envie un 201.

Dejo por aca este art铆culo donde explican un poco m谩s a fondo como crear un sistema de enrutamiento b谩sico en node.js. A mi me sirvi贸 como complemento a esta clase. El link: https://medium.com/@officialrahulmandal/adding-routes-and-logic-to-a-pure-node-js-server-9f995298d984

Mi resumen

<h3>Modulo HTTP</h3>

Node nos ofrece el modulo HTTP el cual nos permite principalmente crear un servidor en nuestro computador.

En este modulo encontraremos todo lo necesario que necesitamos para crear un sistema de rutas, que responder谩 cada ruta, los header que podr谩 mandar, etc.

Uno de los m茅todos principales de este modulo es createServer, el cual nos permitir谩 abrir un puerto para crear el servidor.

cont htttp = require ("http") // importamos el modulo
// es recomenado no inicializar la funcion aqu帽i por los callbacks
http.createServer( (req,res) => { // se le da 2 parametros request y response
	console.log("nueva peticion") 
	console.log(request.url) // immprimimos la url de la petici贸n
	 
	//escribir respuesta al usuario
	res.write("hola ya se responer")
	// escribir en la cabezara   
	res.writeHead(201, {'Content-Type': 'text/plain'}); // codigo de autenricaci贸n y el
	// tipo de contentido
	res.edn() } 
).listen(3000); // terminamos la petici贸n y ponemos el puerto

switch (req.url) {
        case '/hola':
            res.write('\n\rHola desde la ruta'+ req.url);
            res.end();
            break;
        default:
            res.write('\n\rError 404');
            res.end();

    }
}
console.info('escuchando 3000');
	

Si quieres saber qu茅 significa eso de los estados 200, 201, etc.
Te dejo una p谩gina para que veas cu谩les son los estados que manejan las peticiones explicados con gatitos 馃槅

Cuando es mejor Usar Node Puro vs Node con express para solicitudes http ?

end(): termina cuerpo de la petici贸n http recibida en el server

Con el profesor Carlos no perdemos tiempo, a esto me refiero con contenido de valor.

const http = require(`http`);

http.createServer(theServer).listen(3005);

function theServer(req, res) {
    console.log(`nueva petici贸n`);
    console.log(req.url);
    switch (req.url) {
        case `/hola`:
            res.write("Bienvenido a hola");
            res.end();
            break;
        case `/node`:
            res.write("Comienza a aprender NodeJs");
            res.end();
            break;
        default:
            res.write("Error 404 Page No Found");
            res.end();
            break;
    }
}```

he aqu铆 mi c贸digo!

const http = require('http');

http.createServer(router).listen(3000);

function router(req, res) {
    console.info('Nueva Petici贸n');
    console.log(req.url);
    res.writeHead(200, {'Content-Type': 'text/plain'});
    //escribir respuesta al usuario
    //res.write('esto es un mensaje para ver que hace en http');
    res.write('Ruta => '+ req.url);
    switch (req.url) {
        case '/hola':
            res.write('\n\rHola desde la ruta'+ req.url);
            res.end();
            break;
        default:
            res.write('\n\rError 404');
            res.end();

    }
}
console.info('escuchando 3000');```

Que facil es crear un servidor y mapear rutas con NodeJs

Write(): escribe 帽a respuesta de la petici贸n http

WriteHead():: Escribir cabecera de respuesta de petici贸n

++listen():++recibe el numero de puerto que estar谩 escuchando el servidor web

M贸dulo HTTP: crear un servido o permite conectarnos a otros servidores externos directamente desde node js, sin tener que pasar por ningun otro sitio, para acceder este m贸dulo se llama require(鈥榟ttp鈥).

hola compa帽eros, si en cualquiera de los case piden con un res.write() el http:

res.write(http)

les va a imprimir todos los c贸digos de status con su especificaci贸n y metodos usables por http.
Saludos.

const http = require('http');

http.createServer(router).listen(3000);

function router(req, res) {
    console.log('nueva peticion!');
    console.log(req.url);

    switch (req.url) {
        case '/hola':
            res.write('Hola, que tal');
            res.end();
            break;
        default:
            res.write('Error 404. No se lo que quieres');
            res.end();
            break;

    }
    // Header
    /* res.writeHead(201, { 'Content-Type': 'text/plain' });

    // Escribir respuesta al usuario
    res.write("Hola, ya se usar HTTP de NodeJS");

    res.end(); */
}

console.log("Esuchando http en el puerto 3000");

Excelente, todo funciona bien.

Correr un servidor local de node con express y path que agarra todos sus archivos de im谩genes, videos estilos, javascript, les dejo un screen de como lo logre y el c贸digo abajo y unos comentarios de como hacerlo:

var expressGalery = require("express");
var aplicacion = expressGalery();
var path = require('path');

aplicacion.use(expressGalery.static(path.join(__dirname, '../reto del curso - flexnet/')));

aplicacion.get('/', (peticion, respuesta) => {
    respuesta.sendFile(path.resolve(__dirname, '../reto del curso - flexnet/Index.html'))
})

aplicacion.get('/login', (peticion, respuesta) => {
    respuesta.sendFile(path.resolve(__dirname, '../reto del curso - flexnet/Login/Index.html'))
})

aplicacion.get('/registro', (peticion, respuesta) => {
    respuesta.sendFile(path.resolve(__dirname, '../reto del curso - flexnet/Login/Registro.html'))
})
let puerto = 9080;

aplicacion.listen(puerto, () => {
    console.log('aplicacion corriendo en el puerto: ' + puerto)
});

// 1) abrir en node.js 驴como?
// 2) vamos al command prompt de Node.js
// 3) vamos en la terminal a la carpeta donde queremos hacer correr el proyecto o servidor
// utilizamos cd y dir para acceder a la carpeta y ver los archivos
// 4) instalamos la libreria de node.js Express
// 5) lo instalamos con el comando: npm install express 
// encontraremos las librerias de express en la carpeta seleccionada
// 6) Ejecutamos la carpeta donde adjuntamos los archivos del proyecto que haremos correr en este caso con
//las lineas de codigo que creamos para ejecutar los archivos
// 7) Ejecutamos el archivo js con el comando
// node nombreDeArchivo.js (en este caso es node aCorrer.js)
//abrimos en el navegador con el numero de ip y  el :9090 0 :8080(puerto) o al que hemos enviado el listen
// Iplocal+:(numero del Listen)
//8) con control + C apagas el servidor y dejas de correr el archivo
// para windows vas a widows, firewall, allows apps to comunicate..., y cambia los permisos para permitir el servidor correr en la red local o en internet.

soy curioso me adelante y por eso soy un chico malo

Hola gente! Arranco mi servidor pero no me aparece accesible en localhost:3000, alguien pudiera hecharme una mano? No veo que est谩 mal, les dejo mi c贸digo

const http = require('http')

http.createServer(myRouter).listen(3000)

function myRouter(req, res) {

  console.log('nueva petici贸n :o')
  consele.log(req.url)

  switch (req.url) {
    case '/':
      res.write('Est谩s en el home :D')
      res.end()
      break
    case '/hola':
      res.write('Hola amigoos')
      res.end()
      break
    default:
      res.write('404! Esa url no existe')
      res.end()
  }
}

console.log('Escuchando http en el puerto 3000')```

Este es mi improvisado sistema de rutas 馃榿

const http = require("http")

const routes = {
    "/": function (req, res) {
        res.write("Home page")
    },
    "/about": function (req, res) {
        res.write("About me")
    },
}

function router(req, res) {
    if (!routes.hasOwnProperty(req.url)) {
        res.writeHead(404)
        res.write("Page not found")
        res.end()
        return
    }
    routes[req.url](res, res)
    res.end()
}

const server = http.createServer(router)

server.listen(3000)

Explica muy bien. Excelente!!.

const http = require('http');

http.createServer(router).listen(3000);

function router (req, res) {
    console.log('Nueva petici贸n');
    console.log(req.url);

    switch (req.url) {
        case '/hola':
            res.write('Hola, que tal');
            res.end();
            break;

        default:
            res.write('Error 404: No se lo que quieres');
            res.end();
    }
}

console.log("Escuchando http en el puerto 3000");

Como me ense帽o Freddy 馃ぃ.

.listen(6969);

Primer comentario XD

Se puede iniciar un servidor HTTP en Node en cualquier puerto

Aplicando los conceptos de las clases anteriores como readFile.
Lo que hago en este ejemplo es crear el servidor con HTTP y leeer un archivo .json con la funci贸n readFile y desde el front end consumo la api con fetch .

Pregunta de examen:
驴En qu茅 puerto se puede iniciar un servidor HTTP en Node?

no me funciona el response.write();
osea no me muestra el mensaje en la pagina

NodeJS tiene un gran potencial para crear servidores, por la facilidad de crear el localhost e implementar las rutas del servidor de forma dinamica y sencilla. Excelente profesor!!! Sigamos aprendiendo NodeJS.

Si les muestra alg煤n error puedes probar en ver los puestos que est谩n escuchando con este comando (Linux)

netstat -anp | grep 8011

En este caso el ID del proceso es **16416 **

para matarlo seria el siguiente comando

kill -9 16416 cambiando 16416 por el ID del proceso que quieren matar

馃槈

const http = require('http');
const PUERTO = 3000;

http.createServer(router).listen(PUERTO);

function router(req, res) {
     console.log('nueva peticion隆');
     console.log(req.url);

     switch (req.url) {
         case '/hola':
             res.write('hola, que tal');

             res.end();
             break;
        default:
            res.write('Error 404: no se lo que quieres');
            res.end();
     }
}
const  http = require('http');
http.createServer(router).listen(3000);
    
function router(req, res){
    console.log('Nueva petici贸n');
    console.log(req.url);

    switch(req.url){
        case '/hola':
            res.write('Hola, que tal');
            res.end();
        break;

        default:
            res.write('Error 404: No se lo que quieres');
            res.end();
    }
}
console.log("Escuchando http en el puerto 3000");

Hola, corr铆 esto pero dice que no puede acceder a router, alguna idea por qu茅?

const http = require('http');

http.createServer(router).listen(3000) //puerto que escucha

const router = (req, res)=> { //crea el server
  console.log('nueva peticion')
  console.log(req.url) //request de url

  switch(req.url){
    case '/hola':
      res.write('holi')
      res.end()
      break;

    default:
      res.write('Error 404')
      res.end()
  }
  // res.writeHead(201, { 'Content-Type': 'text-plain'})
  // //escribir respuesta al usuario
  // res.write('hola ya s茅 usar http de node')

  // res.end();//fin del request
}

console.log('Escuchando http en el puerto 3000')```

Modulo HTTP

Nos permite conectarnos con un servidor o crear uno.

const http = require('http');

http.createServer(function(req, res) {
  console.log('nueva petici贸n');
  console.log(req.url);

  switch (req.url) {
    case '/hola': 
      res.write('Hola, que tal');
      res.end();
      break;
    case '/':
      res.write('Hola manu, eres el mejor, me sorprende como estas aprendiendo');
      res.end();
      break;
    default:
      res.write('Buscas algo?, no encontramos nada para ti');
      res.end();
      break;
  }

  res.writeHead(201, {'content-Type': 'text/plain'});
  
  res.end();
}).listen(3000);

console.log('escuchando http en le puerto 3000');
const http = require('http');

http.createServer(router).listen(3000);

function router (req, res) {
    console.log('Nueva peticion');
    console.log(req.url);

    switch (req.url) {
        case '/hola':
            res.write('Hola, que tal');
            res.end();
            break;

        default:
            res.write('Error 404: No se lo que quieres'); 
            res.end();   
    }
    
    /* res.writeHead(201, { 'Content-Type': 'text/plain' })
    //aqui escribir respuesta al usuario.
    res.write('Hola, ya se usar http de NodeJS');
    res.end(); */
}

console.log('Escuchando http en el puerto 3000')

El m贸dulo build-in HTTP de node permite crear un servidor de forma sencilla y r谩pida, aunque por lo general es m谩s popular express para trabajar desde el lado del backend.

Para crear un servidor b谩sico es:

http.createServer( function (request, response ){
})

El c贸digo 418 de http esta de risa

'418': "I'm a Teapot"
const http_server = require('http')

http_server.createServer(function(request, response){

    console.log('NEW REQUEST!')

    if(request.url === '/helloWorld') {

        response.write('Entrasta a mi ruta') 
        response.end()

    } else if(request.url === '/') {

        response.write('Entraste a la ruta por defecto')
        response.end()

    } else {

        response.writeHead(404, { 'content-type': 'text/html; charset=utf-8'})
        response.write(`
            <!DOCTYPE html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <meta http-equiv="X-UA-Compatible" content="IE=edge">
                <meta name="viewport" content="width=device-width, initial-scale=1.0">
                <title>Document</title>
            </head>
            <body>
                <h1>Error 404</h1>
                <h4>No se encontraron resultados para: '${request.url.slice(1)}'</h4>
            </body>
            <script src='./prueba.js'></script>
            </html>
        `)
        response.end()
    }
    
}).listen(8080)

El mio !!

'use strict';
console.clear();

const http = require('http');
const port = 3000;

function get_route(url) {
  const routes = {
    '/': (req, res) => {
      res.write('Hola mundo !!');
    },
    '/test': (req, res) => {
      res.write('Hola test !!');
    }
  };

  const not_route = (req, res) => {
    res.write('Route not found 404 !!');
  };

  return routes[url] || not_route;
}

function router(req, res) {
  console.log('Nueva petici贸n', req.url);

  res.writeHead(200, { 
    'Content-Type': 'text/plain',
    'foo': 'bar' 
  });

  const route = get_route(req.url);
  route(req, res);

  res.end();
}

http
.createServer(router)
.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

Tremenda Clase!!!

No sab铆a el gran potencia que puede tener Node Js con Express.

Que buena clase 馃槃

Espere por esta clase mucho tiempo hasta que por fin encontre lo que queria saber, esta clase deberia de estar en la ruta de ciberseguridad.

Que excelente clase explica muy bien este profe

HTTP

C贸digo

const http = require('http')
http.createServer(router).listen(3000)

function router(req, res) {
  console.log('New request!')
  console.log(req.url)

  switch (req.url) {
    case '/hello':
      res.write(`Hello. whatsup`)
      res.end()
      break
    default:
      res.write('Error 404: I dont know what do you want')
      res.end()
  }

  // res.writeHead(201, { 'Content.Type': 'text/plain' })

  // //Write response to user
  // res.write('Hello, now I know to use NodeJS HTTP')

  // res.end()
}

console.log('Listen http in port 3000')

Para crear un servidor HTTP se debe tener en cuenta que debemos llamar al m贸dulo HTTP de la siguiente forma:

const http = require('http')

Luego, vamos a crear el servidor con los m茅todos del m贸dulo que hemos llamado. Y adem谩s le vamos a decir mediante el m茅todo listen que escuche en el puerto 3000 , el cu谩l es un m茅todo com煤nmente usado y adem谩s no esta reservado. Tambi茅n es com煤n usar los puertos 3001, 8080, 8081 .

 http.createServer(<http-function>).listen(3000)

Este m茅todo nos va a pedir como argumento una funci贸n que tenga como par谩metros una petici贸n request y una respuesta response en este caso la vamos a crear con el nombre router y quedar铆a de la siguiente forma:

function router(req, res) {
  console.log('New request!')
  console.log(req.url)

  switch (req.url) {
    case '/hello':
      res.write(`Hello. whatsup`)
      res.end()
      break
    default:
      res.write('Error 404: I dont know what do you want')
      res.end()
  }
}

Dentro de esta funci贸n podremos ver todo lo que viene de la petici贸n que han hecho al servidor, y podremos dar respuesta a esas peticiones. En el caso de esta funci贸n vamos a obtener la url de la petici贸n y vamos a decir en un switch que si la url tiene la ruta/hello nos devuelva un mensaje 'Hello. whatsup' y en caso que no tenga ninguna ruta nos devuelve un mensaje 'Error...' .

Como buena 鈥減r谩ctica鈥 se pone en un console.log el servidor en el que se esta escuchando.

Sale un Cafe Express entonces!

no entiendo, yo todo el bloque de modulos delcore de NODEJS los senti como cosas que ya hacia en el simple js

鉂わ笍

Yo lo intente con html, fue grandiso la experiencia 馃懇鈥嶐煉

que cool esta clase!!

GG!

Express, next on the list. Fantastic!

clase favorita 鉂わ笍

aaaaaa

createserver

Seg煤n he visto, el m贸dulo HTTP esta muy bien, pero si lo que se quiere es algo muy grande es mejor express.

const http = require('http');

/*
  Crear un servidor basico,
  createServer recibe el siguiente parametro.
  1. Una funcion, que recibe 2 parametros
    1. request.
    2. response
*/

function router(req, res){
  console.log('Nueva peticion');
  console.log(req.url);

  switch(req.url){
    case '/hola':
      res.write('<h1>Hola, que tal</h1>');
      res.end();
    break;

    default:
      res.write('<h1>Error 404</h1>');
      res.end();
  }

  // Headers
  // res.writeHead(201, {'Content-Type':'text/plain'});

  // // Responder la peticion
  // res.write('Hola ya se usar HTTPS con NodeJS');

  // res.end();
}

http.createServer(router).listen(3000);

console.log('Escuchando en el puerto 3000');```

馃槂 muy chevere la clase!

Buena clase!

.