Este profe rifa… Estas de acuerdo?
Conocer los conceptos básicos de NodeJS
Instalación de Node.js
Node: orígenes y filosofía
EventLoop: asíncrona por diseño
Monohilo: implicaciones en diseño y seguridad
Configurar las variables de entorno en Node.js
Herramientas para ser más felices: Nodemon y PM2
Cómo manejar la asincronía
Callbacks
Callback Hell: refactorizar o sufrir
Promesas
Async/await
Entender los módulos del core
Globals
File system
Console
Errores (try / catch)
Procesos hijo
Módulos nativos en C++
HTTP
OS
Process
Utilizar los módulos y paquetes externos
Gestión de paquetes: NPM y package.json
Construyendo módulos: Require e Import
Módulos útiles
Datos almacenados vs en memoria
Buffers
Streams
Conocer trucos que no quieren que sepas
Benchmarking (console time y timeEnd)
Debugger
Error First Callbacks
Manejar herramientas con Node
Scraping
Automatización de procesos
Aplicaciones de escritorio
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 64
Preguntas 13
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')```
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
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!
.
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.