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(‘http’).

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 “prá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!

.