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

1

Bienvenida y presentación del curso

2

Qué es Node y cómo instalarlo

3

¿Qué son y cómo se usan las peticiones HTTP?

4

Métodos, cabeceras y estados

5

Cuerpo y query de la petición

Crear un servidor HTTP en Javascript, y comenzar a escuchar y responder peticiones desde un cliente .

6

Crear un servidor HTTP desde NodeJS

7

¿Cómo pueden venir las peticiones?

8

Recibir información desde el cliente: Body y Query

9

Información contextual: Leer las cabeceras

10

Tipos de respuesta: Vacía, plana, con datos y estructurada

11

Respuestas coherentes

12

Servir archivos estáticos

13

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

14

Conceptualmente: Rutas, controladores y bases de datos

15

Rutas y capa de red: Responsabilidades y límites

16

Controladores: Definiendo la lógica de negocio

17

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

18

Tipos de Bases de Datos: Relacionales y No Relacionales

19

Crear y Configurar tu Base de Datos con MongoDB

20

MongoDB: Almacenar y leer datos

21

MongoDB: Actualizar datos

22

MongoDB: Consultar datos

23

MongoDB: Eliminar Datos

24

Gestionar conexiones a la base de datos desde la API

Uso de entidades para crear aplicaciones escalables

25

Escalando la arquitectura: Múltiples entidades

26

Relacionando nuestras entidades

27

Cómo recibir ficheros desde NodeJS

28

Guardar el fichero en el servidor

Conocer el protocolo de websockets, e implementar comunicación cliente/servidor con SocketIO.

29

WebSockets: Qué son, por qué son interesantes y cómo usarlos

30

Manejo de Websockets con NodeJS

31

Conectar la API al servidor de WebSockets

Revisión de lo aprendido, y próximos pasos

32

Revisión y próximos pasos

33

Tips para escalar nuestro proyecto

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Información contextual: Leer las cabeceras

9/33
Recursos

Aportes 47

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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

Información contextual: Leer las cabeceras


<h3>Cabeceras http</h3>

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.


<h3>Recibir cabeceras del cliente</h3>

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'
}

<h3>Enviar cabeceras desde el servidor</h3>

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

Vamos muy bien!!

Genial buen contenido, comparto con ustedes documentación de node para averiguar mas sobre headers

https://nodejs.org/api/http.html#requestfinished

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:

  • cache-control
    Para poder setear cache especifico para imagenes o archivos de js, etc
  • user-agent
    Para saber de dónde viene, mobile, appel, win, linux, etc.
  • accept
  • accept-encoding

Estas ultimas 2 son cabeceras que podremos usar en algunos casos especiales.

Tambien podemos mandar headers en las respuestas. 🤯

Lo cual es util para:

  • Definir cabeceras personalizadas.
  • Definir las cabeceras que nos interesen dentro de las que hay
  • Definir con el front que solo responda el servidor si viene una cabecera en especifico