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: 鈥淣ode 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(鈥榚xpress鈥);

//inicializamos express
var app = express();

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

//hay que indicarle en donde va a escuchar
app.listen(3000)
console.log(鈥楲a 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(鈥渉ola鈥);

ignorando todo lo que nos envie el cliente

nos imprime 鈥渉ola鈥

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 鈥渘ode -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 鈥渂ash鈥 en vez de que me salgan el 鈥渃md鈥 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 鈥渢enemos 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: