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

Crear un servidor HTTP desde NodeJS

6/33
Recursos
Transcripción

En esta clase vamos a iniciar nuestro proyecto de Node.JS configurando nuestro primer servidor.

Aportes 52

Preguntas 14

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

También se puede escribir como una arrow function:

app.use('/', (req,res) => res.send("Hola") )

En express las funciones de middleware son funciones que tienen acceso al objeto de solicitud (req), al objeto de respuesta (res) y a la siguiente función de middleware en el ciclo de solicitud/respuestas de la aplicación. Más información en: https://expressjs.com/es/guide/using-middleware.html

Comparando como crear un servidor http con nodejs basico y con express podemos entender el porque se utiliza en la mayoria de proyectos express o algun otro framework para crear servidores web.

const http = require('http')

function router(req, res) {
  switch (req.url) {
    case '/':
      res.writeHead(200, {
        'Content-Type': 'application/json',
      })
      res.write(JSON.stringify({ server: 'http', curso: 'nodejs' }))
      res.end()
      break
    default:
      res.write('404 Page not found')
      res.writeHead(404, 'NotFound')
      res.end()
  }
}
http.createServer(router).listen(3000)

RESUMEN :


Para crear un server en NodeJS:

  1. Instalamos,importamos y usamos una librería como express
  2. Declaramos una variable = express()
  3. Aplicamos el método *use con sus dos parámetros.
  4. Aplicamos el método listen para escuchar en un puerto dado el response.

A continuación dejo el código de la clase comentariado.

// Lo primero que hacemos para tener un server en NodeJS es cargar una //librería para  montarlo. Express es una muy buena.
//--> npm i express

const express =require ('express')  // La forma que tiene de traer módulos.

var app = express();
// Para ver que funciona le  pido que me devuelva para cualquier ruta:
app.use('/', function(req,res){ // --->Para cualquier ruta, cre una función, tiene dos parámentros, cualquier funcion http tiene req y res.
        res.send("Estoy aprendiendo!!!"); // Estaes la respuesta que tengo.
});

//Para que lo anterior viva temos que decirle donde va a escuchar, eligimos un puerto, como el 3000 quees muy usado en las apps de Node.

app.listen(3000);
console.log('Estoy escuchando por http://localhost:3000 que es el puerto por el que escucho.');

//Con esto está listo el servidor de Node para que viva:
//---> node server


Yo siempre inicio un repositorio en GitHub, con un README sencillo antes de iniciar el proyecto con npm.
Y cuando creo el package.json con el comando

npm init -y

Se crea automáticamente con los valores que pongo en el README.md y la url de mi repositorio.
Creo que es una buena práctica.

Para los que quieran usar la sintaxis de módulos de ES6 en lugar de CommonJS que se usa de forma nativa en NodeJS, desde la versión 12.x.x de node puede usarse con el sufijo --experimental-modules.
Además necesitamos añadir al package.json una línea:

// package.json
{
...
"type": "module",
"scripts": {
    "start": "node --experimental-modules server.js"
  },
...
}

Ya podemos usar este formato:
import express from 'express'.

https://nodejs.org/docs/latest-v12.x/api/esm.html#esm_introduction

Qué emoción crear mi primer servidor y que ande!!!

npm: “Node Package Manager o simplemente npm es un gestor de paquetes, el cual hará más fáciles nuestras vidas al momento de trabajar con Node, ya que gracias a él podremos tener cualquier librería disponible con solo una línea de código, npm nos ayudará a administrar nuestros módulos, distribuir paquetes y agregar dependencias de una manera sencilla.”

Recomiendo: https://docs.npmjs.com/about-npm/

si al entry point tiene un nombre diferente por ejemplo index.js
para ejecutarlo tendrás que hacer: node Archivo

node index

sino saldrá el siguiente error por notFound

internal/modules/cjs/loader.js:716
    throw err;
    ^

Error: Cannot find module '/Escuela deJS/Node/Express/metodos/index'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:713:15)
    at Function.Module._load (internal/modules/cjs/loader.js:618:27)
    at Function.Module.runMain (internal/modules/cjs/loader.js:931:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

Like si intentaste traer el modulo express de la forma:

import express from 'express';

Y no te funcionó. 😦
SyntaxError: Cannot use import statement outside a module

En el 2021 para trabajar con ES6 en Node basta con agregar al package.json:

"type": "module"

Luego podrás trabajar con import

import express from "express";

const app = express();

app.use('/', (req, res)=>{ res.send('hola'); });

app.listen(3000);

This is my code!

const express = require('express');

var app =  express();

app.use('/', (req, res) => {
    res.send('Que ondas Soy tu primer server con Express');
});

app.listen(3000);
console.log('La aplicación esta escuchando en pueto:3000');```

Mis anotaciones:

//exportamos módulo de express
const express = require('express')

//inicializar express
var app = express()


//Rutas
app.use('/', (req, res) => {
    res.send('Hola')
})

//Escuchar server
app.listen(3000, () => console.log('Servidor conectado, escuchando el puerto 3000'))

¿Que es la licencia MIT?

Excelente clase, las explicaciones de este profesor no tienen precio, es muy motivante ir entendiendo las explicaciones sin tener que repetir 20 veces un video

Mis anotaciones

//Asi nos traemos el paquete de express
const express = require(‘express’);

//inicializamos express
var app = express();

//para cualquier ruta devuelveme un Hola
app.use(’/’, (req, res) =>{
res.send(‘Hola’);
});

//hay que indicarle en donde va a escuchar
app.listen(3000)
console.log(‘La app esta escuchando en http://localhost:3000’);

Documentacion de Express

https://www.npmjs.com/package/express

Me gusta colocar el app.set y el app.get, para el puerto, a la hora de hacer deploy es muy util

const express = require('express');
const app = express();

app.use('/', (req, res) => {
  res.send('Hola mundo con Express');
});

app.set('port', process.env.port || 3000);
app.listen(app.get('port'), () => {
  console.log(`El servidor está escuchando en http://localhost:${app.get('port')}`);
});```

Me surge curiosidad en el minuto 5:26 aparece npm.fintonic.com:4873 ¿Por qué aparece eso?

El servidor solo funciona en local? se puede en un hosting?

const express =  require('express');
var app = express();
app.use('/', function(req, resp){
    resp.send("hola");
});
app.listen(3000);
console.log(" la aplication esta escuchando en el port http://localhost::3000");

Super la clase, se re entiendo lo que explica el profe 😄

const express = require('express');

var app = express();

app.use('/', function(req, res){
    res.send('Hola iniciando el proyecto con node y express');
})

app.listen(3000);
console.log('La aplicación esta escuchando en http://localhost:3000')```

Pregunta. Tengo mi servidor Nodejs en Digital Ocean(Linux) y quiero que mi VScode se conecte directo (tipo FTP) y que actualice directamente a medida que guardo en el servidor y me evito tener que subir los files.

Conocen algun plugin?

Creo que seria bueno actualizar este curso

esto es una sub esplicasion

const express = require("express");

esto importa espress util para prender un resvidor

app.use("/", function(req, res){
	res.send("hola");
});

esto resibe y enbia datos a la url dada pero no le pusimos nada ha si que solo ponemos

send(“hola”);

ignorando todo lo que nos envie el cliente

nos imprime “hola”

Exelente Clase!

El profe explica de maravilla la verdad, pero se vienen curvas. Si no tienen muy clara la teoria detras del protocolo http y un poco del tcp/ip, sera un poco complicado entender que estamos haciendo. Asi que les dejo recursos muy buenos que encontre investigando.

HTTP:
https://www3.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html
Modelo OSI-TCP/IP
https://youtu.be/CnNRdJgeMo8

Que interesante que la sintaxis de ES6 para importar módulos se parezca mucho a la de Python!

Tengo instalado Node y lo puedo verificar en la powerShell con el comando “node -v”. El problema que no lo puedo verificar en la terminal de VisualStudioCode

Super sencillo generarlo

Creo que no le aceptó la versión 0.1.0
Cuando creó el package.json se puso la versión que venía por defecto 1.0.0

Apuntes de la clase:

Fantastico

super sencillo, 😉

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


var app = express();

app.use('/', (req, res) => {
    res.send('Hola');
})

app.listen(PUERTO);
console.log(`La aplicacion esta escucando en http://localhost:${PUERTO}`);

Crack!!

genial, la facilidad de express, pero no seria mejor hacerlo nativo?
creo que tampoco es tan complicado

Para los sistemas basadoS en debian instalar con :
sudo apt update
sudo apt install nodejs npm

Como puedo hacer para que mi terminal tambien se vea de colores?

Como hago para que mi terminal se vea como la de el con el “bash” en vez de que me salgan el “cmd” como predeterminado

La primera vez me costó mucho!! Ahorita, fue muy rápido!!

en la vercion se quedo como 1.0.0 y se supone que se habia cambiado a 0.1.0

Amé esta clase! Gracias profesor Carlos 😄

😃
Archivo server

const express = require('express');
const {home} = require('./routes')
const app = express();
app.set('port', 3000)
app.use('/', home)

app.listen(app.get('port'), ()=>{
    console.log(`port in ${app.get('port')}`);
})

Archivo routes 😃

home = (req, res)=>{
    res.send('ok')
}

module.exports = 
{
    home
}

😃

<h1>Crear un servidor HTTP desde NodeJS</h1>
  • Iniciamos el proyecto npm

    $npm init

  • Instalamos express

    $npm i express

  • Creamos el archivo server y usamos el módulo de express para crear el servidor con

const express = require("express");

var app = express();

app.use("/", function (req, res) {
  res.send("Hola");
});

app.listen(3000);
console.log("La aplicación esta escuchando en http://localhost:3000");

Alguien puede pasar el link al curso de express que mencionan?? porque siempre dicen “tenemos un curso de XCOSA en platzi, vayan a verlo” y nunca dejan referencias al mismo. Despues hay 50 cursos de XCOSA en platzi, anda a saber cual es el que se refieren.

una de las cosas que siempre hago en cada proyecto con node es hacer un npm -y, un git init y crear un .gitignore con el node_modules y el package-lock.json, porque si lo subo a github no hace falta subir esas dependencias, hace que el proyecto sea más pesado y solo con hacerte un git clone y luego un npm i, se instala todo de nuevo porque ya se quedan las dependencias que necesita el proyecto en el package.json

muy bueno, facil de entender, buen profe!

¿Por qué se utiliza Express para este tipo de ejemplos? Node tiene sus propios módulos nativos, y Express no es el único framework para Node 😕

Recomiendo usar Typescript como lenguaje de programación, ya que al ser un lenguaje tipado estático este ayuda a evitar errores incluso antes de correr el código además de que es un lenguaje muy usado actualmente https://kais.blog/p/6-reasons-why-you-should-learn-typescript-in-2021.
Estos dos blogs me ayudaron a instalarlo correctamente (El primero en español, el segundo en ingles) recomiendo leer ambos:
https://www.digitalocean.com/community/tutorials/setting-up-a-node-project-with-typescript-es
https://developer.okta.com/blog/2018/11/15/node-express-typescript

Hola buenas,
¿No se podría acceder desde otro dispositivo conectado a tu red local?
(¿y puesto a preguntar desde uno conectado a otra?)
Lo he intentado viendo cual es mi ip local con ifconfig y al googlearlo en otro dispositivo conectado a la misma red que el servidor no logra conectarse.

Práctica: