Node me ha abierto muchas puertas…
Conocer y comprender cómo se realizan las conexiones hacia los servidores a través de internet y sus implicaciones en el desarrollo de servidores
Bienvenida y presentación del curso
Qué es Node y cómo instalarlo
¿Qué son y cómo se usan las peticiones HTTP?
Métodos, cabeceras y estados
Cuerpo y query de la petición
Crear un servidor HTTP en Javascript, y comenzar a escuchar y responder peticiones desde un cliente .
Crear un servidor HTTP desde NodeJS
¿Cómo pueden venir las peticiones?
Recibir información desde el cliente: Body y Query
Información contextual: Leer las cabeceras
Tipos de respuesta: Vacía, plana, con datos y estructurada
Respuestas coherentes
Servir archivos estáticos
Errores: Cómo presentarlos e implicaciones en la seguridad
Comprender y desarrollar la arquitectura básica de un backend en NodeJS, y comunicarse entre módulos
Conceptualmente: Rutas, controladores y bases de datos
Rutas y capa de red: Responsabilidades y límites
Controladores: Definiendo la lógica de negocio
Almacenando la información en una base de datos
Utilizar una base de datos para definir, modelar, almacenar y recuperar la información de nuestra aplicación
Tipos de Bases de Datos: Relacionales y No Relacionales
Crear y Configurar tu Base de Datos con MongoDB
MongoDB: Almacenar y leer datos
MongoDB: Actualizar datos
MongoDB: Consultar datos
MongoDB: Eliminar Datos
Gestionar conexiones a la base de datos desde la API
Uso de entidades para crear aplicaciones escalables
Escalando la arquitectura: Múltiples entidades
Relacionando nuestras entidades
Cómo recibir ficheros desde NodeJS
Guardar el fichero en el servidor
Conocer el protocolo de websockets, e implementar comunicación cliente/servidor con SocketIO.
WebSockets: Qué son, por qué son interesantes y cómo usarlos
Manejo de Websockets con NodeJS
Conectar la API al servidor de WebSockets
Revisión de lo aprendido, y próximos pasos
Revisión y próximos pasos
Tips para escalar nuestro proyecto
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Carlos Hernández
Aportes 47
Preguntas 5
Node me ha abierto muchas puertas…
Cada vez me enamoro más de este curso.
Bueno, este es mi punto de vista (favor decirme si estoy equivocado en algo) pero hasta donde tengo entendido node js por si solo nos permite ejecutar JavaScript en un entorno diferente al navegador y pues express nos permite utilizar las node como back-end.
Super interesante el curso
Excelente Profesor
Devolver múltiples headers
Es posible devolver varios headers en una misma instruccion, o en multiples lineas de codigo.
Código de node.js
router.get("/message", function(req,res){
console.log(req.headers);
res.header( {
"custom-header":"nuesto valor personalizado",
"otro-header":"el otro header"
} );
res.header( "mas-headers","mas headers");
res.send('lista de mensajes');
});
Respuesta
Las cabeceras (en inglés headers) HTTP permiten al cliente y al servidor enviar información adicional junto a una petición o respuesta.
Una cabecera de petición esta compuesta por su nombre (no sensible a las mayusculas) seguido de dos puntos ‘:’, y a continuación su valor (sin saltos de línea). Los espacios en blanco a la izquierda del valor son ignorados
Mas informacion: MDN Web Docs: Headers.
Código:
router.get('/message/:id', function (req, res) {
console.log(req.headers);
res.send('Headers enviados por el cliente');
})
Resultado:
{
'content-type': 'application/json',
'user-agent': 'PostmanRuntime/7.26.5',
accept: '*/*',
'cache-control': 'no-cache',
'postman-token': 'be95840f-732e-4260-b337-3f3e9b9911be',
host: 'localhost:3000',
'accept-encoding': 'gzip, deflate, br',
connection: 'keep-alive',
'content-length': '21'
}
Código:
router.get('/message/:id', function (req, res) {
res.header({
'custom-header': 'my-header'
})
res.send('Enviando headers al cliente')
})
vengo de trabajar con PHP, y por el momento me ha gustado mucho nodejs
const express = require('express')
const bodyParser = require('body-parser')
const router = express.Router()
var app = express()
app.listen(3000)
console.log('La aplicación esta escuchando en http://localhost:3000')
app.use(bodyParser.json())
app.use(router)
router.get('/message', (req, res) => {
console.log(req.headers)
res.header({
'custom-header': 'another value'
})
res.send('List message')
})
router.post('/message', (req, res) => {
console.log(req.body)
console.log(req.query)
res.send(`Message ${req.body.text} added`)
})
/* app.use('/', (req, res) =>{
res.send('HOLA')
}) */
Cuando comencé a ver backend en la escuela de javascript, no pude estar más perdido, daban por sentado casi todos los conceptos, pero ESTE curso, hasta el momento, ha sido de pu** madre !!
Genial!!
No habia entendido tan bien node como con este video… wow simplemente genial este curso
Que excelente curso!! Cada vez me gusta mas NodeJS, vengo del mundo de spring boot y nos tardamos mas en configurar el proyecto que en desarrollar las API’s, veo que con nodeJS es mas sencillo arrancar un proyecto desde cero.
Este curso hace que me duela mucho la cabeza
Así si se explica Nodejs…!
Esta Genial el Curso
Está excelente el curso
Excelente, la parte de cabeceras personalizadas.
Una de las cosas que me encanta del Prof Carlos es que escribe el código, corre el programa y si hay un error lo modifica ahí mismo, no es que aparece con el codigo ya hecho o modificado no, se da la oportunidad de equivocarse delante de los alumnos y sabe lidiar con los problemas. Me encanta cuando le da un error en algo y enseguida lo analisa y lo resuelve, demuestra la experiencia y seguridad que tiene en el área
El contenido de este curso está increíble! Detallado y muy bien explicado ⭐⭐⭐⭐⭐
Excelente clase =)
const express = require('express')
const bodyParser = require('body-parser')
const router = express.Router() //nos permite separar cabeceras, metodos, url
var app = express()
app.use(bodyParser.json()) // agregamos json para que acepte las peticiones de ese tipo, asi como urlencoded
app.use(bodyParser.urlencoded({extended: false}))
app.use(router)
router.get('/message', function(req, res) {
console.log(req.headers)
res.header({
"custom-header": "Nuestro valor predeterminado"
})
res.send('Lista de mesajes añadido correctamente')
})
router.post('/message', function(req, res) {
console.log(req.body)
console.log(req.query)
res.send('Mensaje ' + req.body.text + ' añadido')
})
router.delete('/message', function(req, res) {
res.send('Mensaje eliminado')
})
app.listen(3000)
console.log('La app esta escuchando en http://localhost:3000')```
Información de headers:
res.header({
"custom-header":"valor personalizado",
"cache-control": "max-age=60"
}) ```
En donde podemos ver documentacion sobre HTTP
Genial buen contenido, comparto con ustedes documentación de node para averiguar mas sobre headers
excelente clase
Todo muy claro !
Ahora todo se aclara
Podría usar el header del idioma para mandar la app en ingles o español dependiendo de la configuración del browser del usuario?
excelente inicio
This is my code!
const express = require('express');
const bodyParser = require('body-parser');
const router = express.Router();
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false }));
app.use(router);
app.get('/headers', (req, res) => {
console.table(req.headers)
res.header({
'custom-header' : 'Valore personalizado para el cliente'
})
res.send(req.headers);
});
app.post('/pruebas', (req, res) => {
console.log(req.query);
console.log(req.body);
res.send('Datos regresados '+ req.body.text +' correctamente');
});
app.post('/', (req, res) => {
res.send('Que ondas Soy tu primer petición con POST');
});
app.listen(3000);
console.log('La aplicación esta escuchando en pueto:3000');```
Una clase excelente
muy bien!
router.get('/message', (req, res) => {
console.log(req.headers);
res.header({
"custom-header": "Nuestro valor personalizado"
})
res.send('Lista de mensajes');
});
Excelente profesor, había visto tutoriales de nodeJS pero nada como este curso, es de lo mejor que he encontrado!!
Cache-Control también se puede fijar así:
Por ejemplo para indicarle que guarde la respuesta en caché por 300 segundos
res.set("Cache-Control", "public, max-age=300")
Cabecera. Saber de donde viene la petición
const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser')
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(router);
router.get('/message', function(req, res){
console.log(req.headers);
res.header({
"custom-header": "Nuestro valor personalizado"
})
res.send('Lista de mensajes');
});
router.delete('/message', function(req, res){
console.log(req.body);
console.log(req.query);
res.send('Mensaje ' + req.body.text + ' eliminado correctamente');
});
app.listen(3000);
console.log('La aplicación esta escuchando en http://localhost:3000')```
Excelente.
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const router = express.Router();
const port = 4000;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(router);
router.get('/', (req, res) => {
console.log(req.headers);
res.header({
"Inicio-Sesion": "true"
});
res.send('Hemos ingresado con GET, ¡¡ÉXITO!!');
});
router.get( '/message_danger--green', (req, res) => {
console.log(req.body);
console.log(req.query);
res.send(`My message is: ${ req.body.Advertence }. Access: OK`);
});
app.listen(port, () => {
try {
console.log(`Listening on port: ${port}`);
} catch(err) {
console.error(`My error🔥: ${err}`);
}
});
const express = require("express");
const bodyParser = require("body-parser");
const router = express.Router();
var app = express();
app.use(bodyParser.json());
app.use(router);
router.get("/message", function (req, res) {
console.log(req.headers);
res.header({
"custom-hrader": "header peoersonalizado",
});
res.send("lista de mensajes");
});
router.delete("/message", function (req, res) {
console.log(req.query);
console.log(req.body);
res.send("mensaje añadido");
});
// app.use("/", function (req, res) {
// res.send("hola");
// });
app.listen(3000);
console.log(
"la app esta escuchando en http://localhost:3000"
);
Saludos, con una cabecera personalizada puedo crear una que me valide ejemplo un valor para que solo funcione en un servidor, si esa app la cambian a otro servidor, deje de funcionar porque no coincide? solo lo estoy pensando por cuestión de seguridad
Haciendo destructuring de las request 😃
home = (req, res)=>{
const {host,accept,'user-agent':user, connection, 'cache-control':cacheC } = req.headers
res.header({
"custom": "customs"
})
res.send(`${host} , ${accept}, ${user}, ${connection}, ${cacheC}`).status(200)
}
Si ustedes quieren establecer una cabecera, tradicional de HTTP, para asignar un valor, por ejemplo Cache-Control
, pueden hacerlo de la siguiente manera:
const cacheResponse = (req, res, next) => {
try {
if (mode === 'dev') res.set('Cache-Control', `public, max-age=${cacheTimingSeconds}`);
else res.set('Cache-control', `no-store`);
next();
} catch (error) {
next(error);
}
};
Cabe mencionar que en modo dev, la caché no debería ser manipulada porque nos generaría problemas
usar la siguiente línea como en el video
res.headers({...})
me dió el siguiente error:
res.headers is not a function
Me funcionó con estas dos lineas (cualquier de ellas):
res.header({'mi-header': 'valor'})
o
res.header('mi-header', 'valor')
Las cabeceras que nos seran muy utiles:
Estas ultimas 2 son cabeceras que podremos usar en algunos casos especiales.
Tambien podemos mandar headers en las respuestas. 🤯
Lo cual es util para:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?