API REST con NODE.js || GUÍA de BUENAS PRÁCTICAS

Ғылым және технология

Guía de buenas prácticas a seguir a la hora de desarrollar un API REST en JavaScript con Node.js y Express.
Seguimos paso a paso el tutorial de FreeCodeCamp que te comparto a continuación
▶ www.freecodecamp.org/news/res...
Puedes consultar el código visto en el vídeo en este repositorio de GiHub
▶ github.com/carlosazaustre/cro...
⏰ Índice de contenido del vídeo
00:00 Intro y Prerrequisitos
03:12 Arquitectura
04:57 Estructura de carpetas y servidor express
08:36 Versionando de rutas
13:32 Buenas prácticas en el naming
17:30 Controladores
20:40 Servicios
23:10 Modelo de Acceso a Datos
28:40 Middlewares
31:02 Lógica del POST/Create
43:02 Hora de Debuggear
🎬 Otros vídeos que pueden interesarte
FUNDAMENTOS DE NODE.JS
• PRIMEROS PASOS en NODE...
CREAR UN SERVIDOR HTTP CON NODE.JS
• 7 EJERCICIOS para apre...

Пікірлер: 100

  • @juanlujan6158
    @juanlujan6158 Жыл бұрын

    Muchisimas gracias Carlos!!! Estoy iniciando en backend y con esto ayudas muchisimo. Es super clara y entretenida tu explicación 😁

  • @nahuelgigena4276
    @nahuelgigena4276 Жыл бұрын

    No me canso de ver este video! PERFECTO! Gracias Carlos!!!!

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Muchas gracias Nahuel! Me alegra!

  • @daniel-24gra79
    @daniel-24gra79 Жыл бұрын

    Que bueno es saber que hay tan buenos referentes en este mundo del desarrollo de softaware y sobre todo con tantas ganas de enseñar, un video chill, muy buen contenido, y sobre todo entendible; Muchas Gracias

  • @CarlosAzaustre

    @CarlosAzaustre

    11 ай бұрын

    Gracias Daniel!! Me alegro que te guste el vídeo y agradezco tus comentarios ☺️

  • @AsCodigo
    @AsCodigo Жыл бұрын

    Que lindo canal Carlos!! Gracias!

  • @code_castle
    @code_castle Жыл бұрын

    Ey tengo que decir que este es uno de los mejores tutos que ye haz lanzado, me gusto mucho... Espero que sigas dándole seguimiento por ejemplo, pata consumir esa api desde React por ejemplo, y guardar la info con MySql... O mongo..

  • @eldior777
    @eldior777 Жыл бұрын

    Esto es excelente, realmente me ayudó un montón el video. Mil gracias Carlos!

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Un placer! ☺️ Tienes más videos en la playlist, y ordenados aquí: carlosazaustre.es/cursos/nodejs-gratis

  • @CMongez
    @CMongez Жыл бұрын

    Excelente video Carlos

  • @francososa4937
    @francososa493711 ай бұрын

    Excelente contenido! en unas 4hs aprendi una gran parte de node con excelentes practicas gracias a vos!

  • @CarlosAzaustre

    @CarlosAzaustre

    11 ай бұрын

    Que bueno Franco! Me alegro mucho :)

  • @fabriqr2930
    @fabriqr2930 Жыл бұрын

    Volviendo a ver este video para aprender a diario

  • @davidmachado9466
    @davidmachado9466 Жыл бұрын

    Gracias por este contenido!!!

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    A ti! Espero que te sea útil!

  • @edwinzapata1626
    @edwinzapata16265 ай бұрын

    Eres el P*to amo, muchas gracias y saludos desde Colombia!!!!

  • Жыл бұрын

    Explicas todo perfectamente, se entiende rápido y se ve que realmente sabes lo que estás haciendo, brutal. Gracias por el curro y por compartirlo.

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Muchísimas gracias Ancor!! 🤩

  • @fabricionavarrete1752
    @fabricionavarrete1752 Жыл бұрын

    Gracias Carlos! 😁excelente video. Mi parte favorita está en el minuto 33:42 🤣 Saludos desde Ecuador.

  • @ivngome8581
    @ivngome8581 Жыл бұрын

    gracias por el tutorial carlos, estuve haciendo uno de node con express el cual termine ayer, quiero repasar y me siento conforme al pausar tu video y hacer todo antes que lo hagas vos... y ver que el resultado es similar y FUNCIONA es un sentimiento de p*ta madre, nuevo sub

  • @CarlosAzaustre

    @CarlosAzaustre

    11 ай бұрын

    Que bueno!! Me alegro mucho!

  • @noobdev4181
    @noobdev4181 Жыл бұрын

    Execelente contenido. Esto me ha ayudado a entender muchas cosas que ignoraba. 🚀

  • @vandark1233
    @vandark1233 Жыл бұрын

    I need to thank you, really good video

  • @augustocastro376
    @augustocastro376 Жыл бұрын

    Esta excelente el video

  • @Gaby-hl4pp
    @Gaby-hl4pp Жыл бұрын

    Pera xD , voy a tu directo de 3 horas o a este video ? Esta todo ? LOLO me quede anonadado. Felicidades :)

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Aquí está el tutorial en si y al grano. En el directo de Twitch además de esto hay partes en las que contestó preguntas del chat, por eso es más largo

  • @AlexisHernandez-cf5kb
    @AlexisHernandez-cf5kb11 ай бұрын

    tremendo video!

  • @CarlosAzaustre

    @CarlosAzaustre

    11 ай бұрын

    Gracias Alexis!

  • @koltuz
    @koltuz11 ай бұрын

    Amigo esta guia esta muy buena, explicas muy bien y el video se pasa volando, veo que aun le das like a los comentarios recientes asi que voy a aprovechar de dar la unica falla que le encuentro al video, es que no tienes la siguiente parte (al parecer 4) en la descripcion o con un nombre que sea facil de encontrar, aun asi agradesco tu trabajo

  • @CarlosAzaustre

    @CarlosAzaustre

    11 ай бұрын

    Muchas gracias Koltuz! Revisaré estos vídeos para que desde cualquier se pueda seguir toda la serie. Mientras, en esta playlist los tienes todos ordenados, incluso la versión que hice hace ya unos cuantos años. kzread.info/head/PLUdlARNXMVkk7E88zOrphPyGdS50Tadlr

  • @albertoroblesdelafuente3610
    @albertoroblesdelafuente3610 Жыл бұрын

    Carlos! Estaría genial que cuando acabases estas guías dieras otras buenas prácticas de un nivel más senior. Gracias!

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    ¿Clean Architecture?

  • @comander47
    @comander473 ай бұрын

    muchas gracias, me sirvio mucho este video, soy programador pero la mayor parte de mi vida he usado python. Hace 2 dias una empresa me envio una prueba de codigo en javascritp para hacer un blog con base de datos, front end y backend, este video me sirvio muchisimo :D xD acepte el reto porque me dijeron que nadamas querian ver mi capacidad (si les dije que no se javascript) y porque honestamente mi github estaba muy vacio.

  • @CarlosAzaustre

    @CarlosAzaustre

    3 ай бұрын

    Me alegro que te haya servido! Gracias por suscribirte :) Espero que encuentres contenido de tu interés

  • @Deus-lo-Vuilt
    @Deus-lo-Vuilt Жыл бұрын

    Buenisimo , estuve en el directo ajajaj

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Ahora a ver las mejores jugadas 😄

  • @Deus-lo-Vuilt

    @Deus-lo-Vuilt

    Жыл бұрын

    @@CarlosAzaustre claro ajajjaja 😂😂

  • @kuzaigaming7588
    @kuzaigaming75882 ай бұрын

    Pregunta existencial de buena práctica (soy oldschool Java). ¿Por qué no cerrar el if con un else en la validación de datos de la BD Workout.js? Saludos, excelente tuto :D

  • @danielaquilino4805
    @danielaquilino4805 Жыл бұрын

    Hola Carlos, una pregunta, si estas comenzando ha desarrollar un e-commerce o un sitio web que permita hacer compras en linea es recomendable separar en backend del frontend en el proyecto o bastaria con usar next.js?

  • @eduardogarcia-ji4mb
    @eduardogarcia-ji4mb Жыл бұрын

    Una pregunta si quiero meter esas carpetas de back-end en angular como las puedo ingresar..Se puede agregar todas las carpetas en src en angular solamente o cual seria en si la buena practica?

  • @srdani3l89
    @srdani3l89 Жыл бұрын

    Holaa, muy buen video, gracias por la explicación 😃 Disculpa, cual es el theme que usas en el vscode? 😅

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Gracias!! El theme se llama Lucy, aunque ya no está en el marketplace de VSCode

  • @Lgr2782
    @Lgr2782 Жыл бұрын

    Hola pregunta cuando retornas el.json se puede poner otro nombre que no sea data para retornar la data

  • @rr69sport69
    @rr69sport69 Жыл бұрын

    45:19 podría ser también un `array.some()` esto devuelve true o false y te ahorras el `> -1` 😁😁

  • @0725jam

    @0725jam

    Жыл бұрын

    Si esa era mejor opción

  • @anasantoandre5940
    @anasantoandre5940 Жыл бұрын

    Hola! muy bueno el video! Lo que llamas Data access layer sería la capa repositorie del patrón de repositorio? Osea: router ---> controller --> service --> repositorie --> BD (mySql)? En la capa de repositorie se desarrollarían todas las funciones (del ORM) que operan en forma directa con la BD? Gracias!

  • @user-rd4oo1jg5g
    @user-rd4oo1jg5g7 ай бұрын

    Hola que tal? Muy buen video, consulta. En el caso de hacer un get teniendo una api rest y la respuesta devuelva ejemplo 50.000 registros, conviene hacer una sola llamada y luego manejar la data desde el front end , hacer paginacion en el Backend y al hacer la llamada que nos diga cuantas páginas y registros tenemosbe ir haciendo una llamada por página o que otro método? Muchas gracias

  • @mauricioserravallejos7034
    @mauricioserravallejos7034 Жыл бұрын

    Mas tutoriales con Nodejs porfa

  • @danielgracia6870
    @danielgracia6870 Жыл бұрын

    Como haces para que la terminal te de hints como el init del npm init?

  • @hectorsevilla7530
    @hectorsevilla7530 Жыл бұрын

    Muchas gracias por el Video Carlos, una pregunta, las validaciones del cliente se hacen en el router directamente o en el controlador?

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Yo diría que en el controlador. Es el encargado de recibir y enviar desde/hacia la vista (en este caso un JSON)

  • @a.garciagaray
    @a.garciagaray Жыл бұрын

    ¿Cómo o con qué se hace para colocar los iconos en el código que se esta escribiendo en VSCode? no encuentro ese plugin

  • @ElvisSaavedra
    @ElvisSaavedra Жыл бұрын

    El error que tiene en el minuto 46.34 es porque había un paréntesis extra y hacía que isAlreadyAdded no tenga el valor esperado: const isAlreadyAdded = (lo que retorna del findIndex) y la sintaxis correcta era: const isAlreadyAdded = (lo que retorna del findIndex) > -1 o sea que al mismo tiempo que se hace el findIndex se hace la validación de si es mayor a -1 y eso se le asigna a la variable, no sé si me expliqué bien xd

  • @1000tonlucho
    @1000tonlucho Жыл бұрын

    15:05 a eso llamo yo argumentar 🤣

  • @camilogalvis857
    @camilogalvis857 Жыл бұрын

    Saludos, tengo una pregunta, este tipo de estructura de carpeta, archivos, dependencias y demás tiene algún nombre como arquitectura? es decir, se puede definir esto como una arquitectura X para trabajar el backend con Node y Express? De antemano, muchas gracias.

  • @TheGodKrynn

    @TheGodKrynn

    Жыл бұрын

    Arquitectura de 3 capas o Arquitectura de 3 niveles, lo dice al principio cuando esta explicando qué arquitectura va a utilizar xd

  • @matiassebastianrivero977
    @matiassebastianrivero977Ай бұрын

    Que tal, cual es ese complemento que se autocompleta y ayuda?

  • @badbunnyfreaky
    @badbunnyfreaky Жыл бұрын

    Carlos que fuente usas esta muy clara y legible!!

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Se llama Lilex. Es Open Source, la puedes encontrar en Github :)

  • @hermannheyer5156
    @hermannheyer5156 Жыл бұрын

    Muchas gracias, la clase está genial una duda, cómo se pone el cohete?

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    En Mac, la combinación de teclas Cmd + Alt + space me muestra los emojis del sistema. No se si otros sistemas operativos tienen algo similar

  • @pw4645
    @pw4645 Жыл бұрын

    Amigo, que extension usas para Autollenar tan rapido todo? gracias

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Github Copilot y Tabnine :)

  • @yeisonstivensanzcastro3263
    @yeisonstivensanzcastro3263 Жыл бұрын

    Carlos una pregunta, como haces para colocar los iconos al escribir el codigo que se abre todo un panel de ellos?

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    En Mac se abre ese panel con Ctrl + CmD + space

  • @ArielMartinez-ee7kd
    @ArielMartinez-ee7kd Жыл бұрын

    como hace para que le previsualice el codigo que va a poner? que no sea copilot. Porque en mi VSC no lo hace y tampoco me agrega los () al final. Alguien me puede ayudar?

  • @josegutierrofelip279
    @josegutierrofelip279 Жыл бұрын

    Hola Carlos, cual es el tema de VSCode que estas usando en este video? Gracias.

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    “oh Lucy” mi favorito :)

  • @josegutierrofelip279

    @josegutierrofelip279

    Жыл бұрын

    @@CarlosAzaustre Gracias!

  • @DoblandoPapel
    @DoblandoPapel Жыл бұрын

    hola, no tengo claro lo de los templates, como puedo hacer para conectar mi header y menu de html con otros documentos sin nesesidad de copiar el codigo en los otros documentos?. buen video gracias.

  • @MrGasparilom

    @MrGasparilom

    Жыл бұрын

    usa "ejs", es un motor de plantillas que te permite meter lógica de js en tu front, alli si que puedes incluir todas esas porciones de codigo que se repiten en cada hoja tales como: head, navbar, footer, scripts, etc. es muy facil de usar.

  • @RevolutionYourMusic
    @RevolutionYourMusic3 ай бұрын

    Hola amigazo, estoy en una tragedia tamaño megalodonte, estoy configurando mi API rest pero no tengo respuesta del server en la terminal. Alguna buena alma q me ayuda??

  • @CarlosAzaustre

    @CarlosAzaustre

    3 ай бұрын

    Pueden ser muchas cosas… problemas de asincronía, que te falte algún módulo como bodyparser,….

  • @leonardotejero9951
    @leonardotejero9951 Жыл бұрын

    Que extencion usas para que salgan sugerencias de codigo?

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Es GitHub Copilot. Es de pago pero, uf, merece mucho la pena

  • @nico6346
    @nico6346 Жыл бұрын

    Que tipografia / font usas Carlos??

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Hola Nicolás! Se llama Lilex. La puedes encontrar aquí: github.com/mishamyrt/Lilex

  • @joseosorio2894
    @joseosorio2894 Жыл бұрын

    Hola Carlos, me encanto tu video. Como se llama ese theme de visual studio code?

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Hola José! Se llama “Oh Lucy”

  • @apptsx
    @apptsx Жыл бұрын

    Algun tutorial para personalizar el prompt de la terminal como lo tienes?

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Lo tengo pendiente, es Oh my Zsh con PowerLevel. A ver si saco tiempo y lo preparo :)

  • @fannycamposa
    @fannycamposa Жыл бұрын

    La api no está habilitada para Cors y los navegadores la bloquean si uno hace una petición fetch hacia su url , como se puede solucionar eso?

  • @ramironavarrete1133

    @ramironavarrete1133

    Жыл бұрын

    vos lo estas diciendo, es cors, no podes cruzar datos entre distintos servidores, por medida de seguridad, almenos que lo permitas explicitamente

  • @nimeavles_dev
    @nimeavles_dev Жыл бұрын

    Echo de menos lidiar con los problemas de las promesas al hacer la querys a la db

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Síndrome de Estocolmo 😂

  • @leonelaguilera8603
    @leonelaguilera8603 Жыл бұрын

    Buenn video, pero muy bajito el audio

  • @joseaburt
    @joseaburt Жыл бұрын

    Quizás hubieras dedicado más en explicar que normalmente aun aplicando las n capas (ya ni hablando de 3) se puede seguir teniendo código espagueti y acoplado entre capas y seguir teniendo un mogollón de mas las practicas y que incluso lo unico por lo que estan ahi es para distribuir entre las capas el desorden, lo cual en lugar de encapsular lógica lo que hace es distribuir complejidad que es más difícil en ocasiones de seguir (dependiendo también de que tan grande sea el proyecto). ¿A qué me refiero con esto? Pues si honramos un poco aunque sea la intención por la que alguien se le ocurrió la arquitectura por capas rápidamente veremos donde se falla, incluso tú mismo tocaste el tema. Mi respuesta: ¿Para qué queremos una capa de servicio? ¿Qué queremos conseguir con ello? ¿Qué es un servicio en realidad? Con respecto al dominio de mi problema, ¿qué parte atacan los servicios? ¿Qué dependencia tiene mi capa de servicio de la capa de acceso a datos? ¿Cómo encapsulo mi servicio del exterior? Habría que refactorizar mi servicio por un cambio en mi capa de acceso a datos? ¿Estoy invirtiendo la dependencia? ¿Cómo de fácil es doblar las dependencias de esta capa? Aquí muchos fallan! ¿Para qué queremos una capa de acceso a datos? Dentro de qué límites se deben mover esta capa? ¿Qué dependencias tiene esta capa? Está acoplada a un ORM o librería? ¿Qué pasa si un nuevo cambio llega? Aquí muchos fallan! Hints: OCP DIP. ¿Para qué queremos una capa de presentación? ¿Qué misión debe cumplir? Debo refactorizar esta capa por un cambio en la última capa (acceso a datos)? ¿Cómo de fácil puedo testear esta capa? Y si mañana no es express.js sino otro? ¿Me dolerá o le dolerá la billetera a mi cliente? Los patrones de diseño y principios de diseño de software en estos escenarios son casi muy intuitivos de aplicar, pero en realidad muchos aplican arquitecturas de capas solo porque todos los demás lo hacen sin detenerse a pensar la razón de ello. Los principios muchas veces vienen de la reflexión y del análisis más que de la experiencia, puedo intuir un principio fácilmente con análisis continuo de mis diseños. Que por cierto antes se solía escuchar mucho el rol de "analista programador", porque será que ya casi no se ven las ofertas con ese título? ¡Curioso! xD Una cosa: existen muchas opciones, unas con más complejidad pero que el precio lo vale, y otras que no tanto. Depende de tu análisis llevarás a tu equipo o proyecto por el camino correcto.

  • @flan_02
    @flan_025 ай бұрын

    Pero parte de que sea con buenas practicas es que incluya typescript...

  • @GarronArgentina
    @GarronArgentina Жыл бұрын

    En mi anterior trabajo enviaban parametros por URL cuando hacian peticiones POST! XD

  • @GarronArgentina
    @GarronArgentina Жыл бұрын

    Que onda openAPI?

  • @kenm7604
    @kenm7604 Жыл бұрын

    Muy rapida la explicacion ... es dificil seguir el flujo

  • @CarlosAzaustre

    @CarlosAzaustre

    Жыл бұрын

    Puedes poner la reproducción a 0.75x o pausarlo cuando necesites

  • @OscarGomez-jc9ch
    @OscarGomez-jc9ch6 ай бұрын

    esto no tienen nada de buenas practicas ni codigo actualizado bro

  • @jhondelahoz-mx3ev

    @jhondelahoz-mx3ev

    6 ай бұрын

    ¿Alguna recomendación de alguien que tenga buenas practicas con código actualizado según tú?

  • @alexdevorigin1

    @alexdevorigin1

    3 ай бұрын

    @@jhondelahoz-mx3evyo diría que implementar middleware’s, errores custom, validate data, concurrencias, tamaño de data, cors, entre otros

  • @inaveilhan
    @inaveilhanАй бұрын

    Hacés cosas que después borrás mil veces. Imposible seguirte el paso.

  • @CarlosAzaustre

    @CarlosAzaustre

    Ай бұрын

    Ya lo siento… El código está completo en este repositorio: github.com/carlosazaustre/crossfit-wod-api

  • @inaveilhan

    @inaveilhan

    Ай бұрын

    @@CarlosAzaustre si, lo vi, gracias

  • @xxdrobbexx
    @xxdrobbexx Жыл бұрын

    Me parece un tutorial bastante regular. No explicas con mucho detalle el error solo copias y pegas

Келесі