6.2 Nest - Js - Cheat-Sheet

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

NestJS

Página de Atajos
Instalar Nest.js CLI: Command line interface

npm i -g @nestjs/cli Banderas adicionales útiles


# Confirmar qué hará el comando
nest g s nombre --dry-run | -d
Nuevo proyecto: en el path actual

nest new project-name


# No archivo de pruebas automático
nest g s nombre —no-spec

Comandos útiles del CLI

nest generate <comando> Métodos HTTP comunes

nest g <comando> Import {


Get, Post, Put, Path, Delete


Mostrar ayuda: en cualquier comando
} from '@nestjs/common';
nest -h

nest g -h
nest g s nombre -h Argumentos de Métodos HTTP:


Aplica a cualquier método http

# Default Get
Componentes comunes: Añadir -h para extras
@Get()
# Crear una clase
nest g cl <path/nombre> # Con segmento dinámico
@Get(':id')
# Crear un controlador
# Especificando una ruta
nest g co <path/nombre>
@Get('cats/breed')
@Get(['cats','breed'])
# Crear un decorador
nest g d <path/nombre> # Paths dinámicos
@Get(':product/:size')
# Crear un guard

nest g gu <path/nombre>
Extraer información de la solicitud (request)

# Crear un interceptor
# Obtener parámetros / segmentos
nest g in <path/nombre> @Param('id')
# Crear un módulo # Obtener el body de la petición
nest g mo <path/nombre> @Body()

# Crear un pipe # Obtener los parámetros de query


nest g pi <path/nombre> @Query()

# Crear un servicio # Obtener respose (Express/Fastify)


nest g s <path/nombre> # Importarse desde express/fastify
@Res()

# Crear un recurso completo


nest g resource <nombre>

Convertir :id del segmento a entero

@Get(':id')
Pipes integrados por defecto
async findOne(
@Param('id', ParseIntPipe) id: number
ValidationPipe ParseIntPipe ){
ParseBoolPipe ParseArrayPipe return this.catsService.findOne(id);
}
ParseFloatPipe ParseUUIDPipe

https://docs.nestjs.com/ fernando-herrera.com

NestJS
Página de Atajos
Librerías externas útiles:
Building Blocks:
yarn add class-validator Guards:

Usados para permitir o prevenir acceso a una ruta.


Ej: Aquí es donde se debe de autorizar una solicitud.

Algunos decoradores de Class Validator


Interceptors:
IsOptional IsPositive IsMongoId
Before Interceptor: interceptan la solicitud (request) y
IsArray IsString IsUUID la pueden transformar completamente basado en las
IsDecimal IsDate IsDateString necesidades.

Ej: caché o logs

IsBoolean IsEmail IsUrl


Pipes:
Con guración global útil
Transformar la data recibida en requests, para
asegurar un tipo, valor o instancia de un objeto.

app.useGlobalPipes( Ej: Transformar a números, validaciones, etc.

new ValidationPipe({
whitelist: true, Controllers:
forbidNonWhitelisted: true, Controlan rutas, son los encargados de escuchar la
}) solicitud y emitir una respuesta.

); Ej: Rutas CRUD

whiteList: Remueve todo lo que no está Decoradores: Estos se puede aplicar a cualquier nivel
incluído en los DTOs
Expanden la funcionalidad de el método, propiedad o
forbidNonWhiteListed: Retorna bad request clase a la cual se adjuntan. Nest.js busca aplicar el
si hay propiedades en el objeto no requeridas
principio DRY fuertemente con decoradores.

Ej: @Controller(‘usuarios’), @Ip(), @CustomDecorator()

Estructura de módulo recomendado:


Services:
src Alojan la lógica de negocio de tal manera que sea
- common reutilizable mediante inyección de dependencias.

——— decorators Ej: PeliculasService para todo lo relacionado a obtener,


——— dtos grabar, actualizar o eliminar información de películas.

——— filters

——— guards Interceptors:


——— interceptors After Interceptor: Intercepta la respuesta que emitirá
——— middleware el controlador y la puede transformar completamente
——— pipes basado en las necesidades.

— common.controller.ts Ej: Estandarizar nuevas necesidades, añadir


— common.module.ts información adicional o almacenar en caché la
— common.service.ts respuesta.

Exception Filters:
Con guraciones globales:
Maneja los errores de código en mensajes de
Que no requieren el “execution context”
respuesta http. Usualmente Nest ya incluye todos los
const app = await NestFactory.create(AppModule); casos de uso comunes, pero se pueden expandir
basado en las necesidades.

app.useGlobalFilters( new Filtro1, … );


app.useGlobalGuards( new Guard1, … ); BadRequestException UnauthorizedException
app.useGlobalInterceptors( new Inter1, … );
app.useGlobalPipes( new Pipe1, … );
NotFoundException ForbiddenException

RequestTimeoutException GoneException

PayloadTooLargeException InternalServerErrorException

https://docs.nestjs.com/ fernando-herrera.com
SesgATeB

fi
fi

NestJS
Página de Atajos

Module: Habilitar CORS:

Agrupan y desacoplan un conjunto de funcionalidad const app = await NestFactory.create(AppModule);


especí ca por dominio.

Ej: auth.module.ts, encargado de todo lo relacionado a app.enableCors();


la autenticación
app.enableCors( options );

@WebSocketGateway({ cors: true }); // Socket


Middlewares:
Modi can o mejoran los objetos de solicitudes o
respuestas (request / response). Pueden terminar el Cookies: Hay que habilitarlas primero con su de nición de TS

ciclo de ejecución, pero no tienen acceso al resultado


yarn add cookie-parser
de la ruta.

yarn add -D @types/cookie-parser


Ciclo de vida
De forma general, estos son los pasos tradicionales,
npm i cookie-parser
pero los decoradores pueden ir en cada etapa.
npm i -D @types/cookie-parser

import * as cookieParser from 'cookie-parser';



Middlewares …
const app = await NestFactory.create(AppModule);
app.use( cookieParser() );
Exception Zone

Guards Variables de entorno: .env les

Crear en el root del proyecto el archivo .env

yarn add @nestjs/config

npm i @nestjs/config
Before Interceptor
app.module.ts

import { Module } from '@nestjs/common';


import { ConfigModule } from '@nestjs/config';

@Module({
Pipes imports: [ConfigModule.forRoot()],
})
Mismo Interceptor export class AppModule {}

Controllers Decorators Uso de variables .env: inyectar esto

constructor(
private readonly configService:ConfigService
){}

Servir contenido estático: crear directorio public

After Interceptor yarn add @nestjs/serve-static

@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname,’..’,’public’),
})
],
Exception Filters
})
export class AppModule {}

https://docs.nestjs.com/ fernando-herrera.com
ccccc
oo

fi

fi

fi

fi

También podría gustarte