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

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Tips para escalar nuestro proyecto

33/33
Recursos

隆Felicitaciones por terminar el Curso de Node.JS!

Hemos aprendido a utilizar Node para crear nuestro backend, un proyecto de un chat 隆hasta utilizando WebSockets! Darle seguridad a nuestro backend, manejar nuestra base de datos y mucho m谩s.

En esta 煤ltima clase te ense帽aremos algunos tips que te podr谩n ayudar a mejorar nuestro proyecto.

Sabemos que ha sido un largo camino, pero estamos seguros de que vali贸 la pena. Y recuerda, 隆nunca pares de aprender!.

Aportes 43

Preguntas 5

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Cuando las variables de configuraci贸n que vamos a guardar son algo sensibles: contrase帽as, uri para acceso a bases de datos, etc, se suele usar el paquete dotenv.
Para instalarlo basta con ejecutar:

npm i dotenv

.
Ahora tenemos que importar dentro del archivo de m谩s alto nivel, en nuestro caso es server.js:

require('dotenv').config()

.
Y al nivel de server.js necesitamos el archivo .env, ah铆 escribimos todas las variables que deseen usar. Siempre usando la estructura NAME=VALUE

DB_URI=mongodb+srv://admin:[email protected]/test?retryWrites=true&w=majority
HOST=http://localhost:3000

.
Para usar estas variables simplemente necesitamos escribir process.env.TU_VARIABLE, no hay que importar en ning煤n otro archivo aparte del server.js
.
Es recomendable escribir el nombre de este archivo dentro de .gitignore y .npmignore para evitar subir esos datos a npm o github. 馃槑

El pueblo pide mas cursos de Carlos! Genial todo el curso.

Con sinceridad es uno de los mejores profesores que tiene Platzi en materia de desarrollo web. Genial este curso.

Ahora a crear mi propio Backend para poner en pr谩ctica lo aprendido

Esta es mi soluci贸n para response.js:

const statusMessage = {
    '200': 'Done',
    '201': 'Created',
    '400': 'Invalid format',
    '500': 'Internal error'
};

/**
 * Respuestas exitosas
 */
exports.success = function(req, resp, data, status = 200) {
    const message = statusMessage[status];
    resp.status(status).send({
        error: '',
        body: data || message
    });
}

/**
 * Respuestas con error
 */
exports.error = function(req, resp, data, status = 500, details) {
    console.error(`[response error] ${details}`);
    const message = data || statusMessage[status];
    resp.status(status).send({
        error: message,
        body: ''
    });
}

Si estamos usando git es muy importante agregar el archivo config al 鈥.gitignore鈥 ya que podemos tener informaci贸n sensible.

Excelente! En el caso de los statusCode y statusMessage creo que se ve m谩s ordenado usando inline if:

  let statusCode = status ? status : 200;
  let statusMessage = message ? message : statusMessages[status];

Genial este curso, creo que debo repasar muchas cosas pues es la primera vez con Node.js
Grande Carlos.

Hola!! Esta clase esta repetida es la Guardar el fichero en el servidor, falta la clase 鈥淭ips para escalar nuestro proyecto鈥.
Por favor la organizan. Gracias

**Reto **
(gracias!)

const statusMessage = {
    '200': 'Done',
    '201': 'Created',
    '400': 'Invalid Format',
    '500': 'Internal Error'
}

exports.success = function (req, res, message, status) {
    let statusCode = status;
    let statusMessage = message;
    if(!status){
        status = 200;
    }
    if(!message){
        statusMessage = statusMessages[status];
    }
    res.status(statusCode).send({ 
        error: '',
        body: statusMessage
    });
}

exports.error = function (req, res, message, status, details) {
    let statusCode = status;
    let statusMessage = message;
    if(!status){
        status = 500;
    }
    if(!message){
        statusMessage = statusMessages[status];
    }
    res.status(statusCode).send({ 
        error: statusMessage,
        body: '',
    });
}```

Excelente curso鈥 me gusto mucho y el profe explica mejor a煤n 馃槂 lo genial es que te mostr贸 un Frontend y no lo dejo solo en backend y seria鈥 ahora a seguir los cursos de Vue, para ver porque no me funciona el websocket del vue front. XD

:)馃憤

Excelente el curso y muy buen profesor, gracias! .

Excelente curso, aprendi mucho de como empezar en el mundo del backend, hay mucho que aprender a煤n pero con este curso ya se tiene una visi贸n de como manejarlo de una manera bastante ordenada, clara y profesional, el profe Carlos es increible en la explicaci贸n, y los tips son muy practicos.

Les dejo mi repositorio de todo el curso https://github.com/CarGDev/Node-JS

Much铆simas gracias por todo Carlos y al equipo de Platzi por capacitarnos incre铆blemente bien, saludos apreciables!!

excelente curso, gracias!

genial curso, por f铆n entend铆 la verdadera funci贸n de un lenguaje backend, con php no me terminaba de quedar claro jajaja

Clase repetida!!!

Un gran curso y un gran profesor. 隆Espero siga dando m谩s cursos en Platzi!

Hago retrospectiva y me alegra demasiado todo lo que he aprendido en este curso. A seguir aprendiendo!

Muy buena intro al mundo back. Felicitaciones!

Muy Bueno el curso. Me encanto !

Un gran curso y un gran profesor, cada d铆a entendiendo m谩s como funciona el backend.

Con un profesor as铆 cualquiera aprende! muchas gracias Carlos!

Genial haber concluido el curso

fue gratificante este curso el profesor explica muy bien!!!

Excelente curso para iniciar con Node, muy buen trabajo Carlos, ahora por el examen.

Re bueno el curso, aprendi muchisimo de node.

Que genial el curso, la arquitectura utiizada, la parte de WebSockets me encant贸, muy buen profesor

Excelente curso Gracias carlos

MUCHAS MUCHAS Gracias por este curso. He abierto un amplio panorama con el mundo de NODEjs

Muy buen curso, entend铆 muchas cosas que hab铆a intentado aprender antes. Hay que practicar para no olvidar lo que aprendimos.

super, 馃槈

const config = {
    dbURL: process.env.DB_RRL || 'mongodb+srv://db_user:[email protected].mongodb.net/test?retryWrites=true&w=majority',
    port: process.env.PORT || 3000,
    host: process.env.HOST || 'http://localhost:',
    publicRoute: process.env.PUBLIC_ROUTE || 'app',
    filesRoute: process.env.FILES_ROUTE || 'files'
}

module.exports = config;

excelente curso

Estupendo curso, ahora tengo una mayor comprensi贸n de c贸mo hacer el Backend de una aplicaci贸n usando Node.js, muchas gracias por las explicaciones instructor Carlos y dem谩s miembros de Platzi.

Este s铆 que es un verdadero curso 鉂わ笍

Excelente curso 馃憣!!!

Excelente curso de mi tocayo! Muy claro de inicio a fin, muy buen contenido y profesionalismo!

Como har铆amos para desplegar esto en un hosting como Heroku o vercel ?

Buen comienzo de nodejs =) Gracias

Excelente curso! Gracias, Carlos 馃檶馃徏

megusta mucho utilizar https://www.npmjs.com/package/babel-plugin-transform-define ya que iual puedes manejar variables de entrono

Les comparto mi config.js 馃槃

require("dotenv").config();

const config = {
  dev: process.env.NODE_ENV !== "production",
  port: process.env.PORT || 3000,
  cors: process.env.CORS,
  dbUser: process.env.DB_USER,
  dbPassword: process.env.DB_PASSWORD,
  dbHost: process.env.DB_HOST,
  dbName: process.env.DB_NAME,
  publicRoute: process.env.PUBLIC_ROUTE || "/app",
  filesRoute: process.env.FILES_ROUTE || "/files",
};

module.exports = { config };

Muy buen profesor y un curso genial.