Api Rest para la gestión de envíos, productos, puntos, rutas, etc, ejemplificando parte de la arquitectura de desarrollo de PedidosYa Envíos implementado con NestJS, NodeJS, TypeORM, dotenv, cors, swagger, swagger-ui, MySQL, otros.
Ver
- 1.0) Descripción del Proyecto.
- 1.1) Ejecución del Proyecto.
- 1.2) Configuración del proyecto desde cero
- 1.3) Comandos de utilidad.
- 1.4) Tecnologías.
1.0) Descripción 🔝
1.1) Ejecución del Proyecto 🔝
Ver
1.2) Configuración del proyecto desde cero 🔝
Ver
- Creamos un entorno de trabajo a través de algún ide, luego de crear una carpeta nos posicionamos sobre la misma
cd 'projectName'
- Instalamos la última versión LTS de Nodejs(v18)
- Instalamos NestJS de forma global
npm i -g @nestjs/cli
- Creamos un proyecto Nest
nest new nombreProyecto
- Creamos un proyecto Nest
nest new nombreProyecto
- Crear un nuevo modulo sin test
nest g mo moduleName --no-spec
- Crear un nuevo servicio sin test
nest g s moduleName --no-spec
- Crear un nuevo controlador sin test
nest g co moduleName --no-spec
- Podemos automatizar los archivos anteriores con la generación de resources( Esto creara entitie,service,module, controller, etc)
nest g resource resourceName --no-spec
- Seleccionamos los siguientes valores
- ? What transport layer do you use? REST API
- ? Would you like to generate CRUD entry points? Yes
- Instalamos el plugin para dotenv (variables de entorno)
npm i dotenv
- Instalamos el plugin para TypeORM junto con el controlador de mysql para el mapeo de datos.
npm i @nestjs/typeorm typeorm mysql2
- Para el uso del orm, podemos seguir la guía de configuración de typeorm para db.
- Instalamos el plugin de nest con swagger paa la documentación de nuestra Api rest.
npm i @nestjs/swagger
- Instalamos el plugin class-validator para validaciones de tipos de datos, propiedades de clases, etc.
npm i class-validator
1.3) Comandos de utilidad 🔝
Ver
- Crear un nuevo proyecto NestJs
nest g projectName
- Crear un nuevo modulo sin test
nest g mo moduleName --no-spec
- Crear un nuevo servicio sin test
nest g s moduleName --no-spec
- Crear un nuevo controlador sin test
nest g co moduleName --no-spec
- Podemos automatizar los archivos anteriores con la generación de resources( Esto creara entitie,service,module, controller, etc)
nest g resource resourceName --no-spec
- Seleccionamos los siguientes valores
- ? What transport layer do you use? REST API
- ? Would you like to generate CRUD entry points? Yes
1.4) Tecnologías 🔝
Ver
| Tecnologías | Versión | Finalidad |
| ------------- | ------------- | ------------- |
| NodeJS | 14.18.1 | Librería JS |
| NestJS | ^10.0.0 | Framework de NodeJS |
| Typescript | 3.8.3 | Lenguaje con alto tipado basado en JS |
| TypeORM | ^0.3.17 | ORM |
| Mysql | 10.1 | SGDB |
| XAMPP | 3.2.2 | Paquete de servidores |
| Swagger | ^7.1.2 | Documentación de Api |
| VSC | 1.72.2 | IDE |
| Postman | 10.11 | Cliente Http |
| CMD | 10 | Símbolo del Sistema para linea de comandos |
| Git | 2.29.1 | Control de Versiones |
| Extensión |
| ------------- |
| Prettier - Code formatter |
| Typescript Toolbox - generate setters, getters, constrc, etc |
| Otras |
2.0) Endpoints y recursos 🔝
Ver
2.1) Ejemplos 🔝
Ver
3.0) Prueba de funcionalidad 🔝
Ver
3.1) Referencias 🔝
Ver
- Using async and promises
- Query parameters and parameters
- Using query parameters
- Autovalidation in NestJS
- Typeorm Relationships with cascade
- Using Foreign keys tutorial
- Using Foreign keys stackoverflow
- Using Providers with Nestjs
- Habilitar y configurar validaciones con Nestjs
- Validación de campos
- Validación de propiedades de clases
- Validación con enumerados
- Validación con fechas