¿Por qué este workshop?
El objetivo del taller es aprender a crear un API Rest con Node.js y Express. Construiremos nuestros endpoints validados y testeados correctamente. Utilizaremos una base de datos MongoDB en la nube y conectaremos con servicios de terceros para obtener cierta información. Todo ello intentando aplicar buenas prácticas de desarrollo y testing. Vamos a preparar la api para un “kairosTinder”
Requisitos
Javascript nivel básico. Será necesario tener instaladas las siguientes herramientas antes del inicio del taller. Si tienes alguna duda puedes contactar directamente con cualquiera de los profesores que te ayudarán a tenerlo todo listo.
- Node.js 12.16 LTS https://nodejs.org/es/
- NPM https://www.npmjs.com/get*npm
- Postman https://www.postman.com/
- Robo 3T https://robomongo.org/download
- GIT
- Editor favorito (VS Code, Atom, Sublime…)
¿Quienes somos?
-
Beatriz de Miguel (beatriz.demiguel@kairosds.com) Programadora front desde hace 6 años y desde hace 1 año más enfocada en el mundo backend.
-
Víctor Pose (victor.pose@kairosds.com) Desarrollador con más de 5 años de experiencia en Back, tanto con Node.js como con Java.
Antes de empezar
Conoce la estructura básica de un proyecto backend:
Elementos:
- Rutas: donde se conecta qué controladores o middlewares ejecutar para una petición HTTP.
- Controladores: donde se ubican las funciones o middlewares que sepan responder a las peticiones.
- Middlewares: donde se ubican las funciones que se encargarán de preprocesar o postprocesar los datos de las peticiones HTTP, por ejemplo, la autentificación de usuarios, validación de datos entre otros.
- Dominio: donde se define la lógica de negocio
- Datos: donde se definen los modelos que permitirán manipular la base de datos
¿Cómo es un proyecto con expressJS?
Puesta en marcha
Ya puedes cambiar a la rama challenge-0
y hacer el challenge
Endpoint básico que conecta con Mongo
¿Qué es un ODM?
Es una librería de modelado, que nos permita manipular la base de datos sin necesidad de conocer mongodb a fondo. Hay tareas repetitivas que controlar como la inserción, la búsqueda, la conexión, evitar inyección de código malicioso, mapear los datos de la base a modelos, etc. Estas tareas y más son las que conforman normalmente un ORM (Object-Relational mapping).
Ya puedes cambiar a la rama challenge-1
y hacer el challenge
Patrón middleware y filtros con Mongo
- Escritura de middleware para su uso en aplicaciones Express
- Validaciones con JOI
- Manejo de errores en Express
- Utiliza códigos http
Ya puedes cambiar a la rama challenge-2
y hacer el challenge
Test de integración del Api con supertest
Ya puedes cambiar a la rama challenge-3
y hacer el challenge
Refactoring y estructura de proyecto
Ya puedes cambiar a la rama challenge-4
y hacer el challenge
Conexión con Apis externas.
Ya puedes cambiar a la rama challenge-5
y hacer el challenge
Documentación de api: