Saltar al contenido
Portada » NestJS

NestJS

NestJS es un framework para construir aplicaciones Javascript backend en Node de forma rápida y escalable. Soporte completo para el uso de TypeScript, con esta herramienta conviertes el mecanismo de escribir JS como si tuviera “tipado fuerte”.

Por defecto utiliza Express para montar un servidor web HTTP aunque también puede configurarse Fastify fácilmente.

Con Nest vas a tener una arquitectura base para construir tus aplicaciones, muy inspirada en Angular.

Como empezar a usar Nest JS

Requisitos

Necesitas tener previamente instalado Node JS para poder ejecutar el instalador de paquetes npm.

Instalación de NestJS

Para construir el esqueleto de un nuevo proyecto en Nest JS puedes ejecutar los siguientes comandos. De esta manera se generarán los directorios y ficheros básicos iniciales.

$ npm i -g @nestjs/cli
$ nest new nombre-proyecto

Se genera el directorio src con algunos ficheros core:

  • src
    • app.controller.spec.ts: Un controlador básico.
    • app.controller.ts: Pruebas unitarios del controlador.
    • app.module.ts: El módulo raíz de la aplicación.
    • app.service.ts: Servicio básico con un único método.
    • main.ts: Fichero de entrada de la aplicación que usa la función core NestFactory para crear una instancia de la aplicación Nest.

Plataforma HTTP

NestJS es agnóstico de la plataforma. Está preparado para trabajar con cualquier Framework HTTP de NodeJS. Soporta Out-Of-The-Box tanto Express como Fastify.

Para poder inicializar el API de Express o Fastify podemos hacerlo del siguiente modo:

const app = await NestFactory.create<NestExpressApplication>(AppModule);

Ejecutar la aplicación

Puedes ejecutar el siguiente comando para levantar la aplicación y se quede a la espera de recibir peticiones HTTP.

$ npm run start

Este comando levantará el servidor HTTP y escuchará en el puerto definido en el fichero src/main.ts.

Para monitorizar los cambios en los ficheros de desarrollo puedes levantar la aplicación de la siguiente forma:

$ npm run start:dev

Controladores

Una vez que tenemos instalada y sabemos levantar la aplicación podemos meternos en faena. En este punto aprenderemos a programar controladores, estos serán los responsables de procesar las peticiones HTTP que lleguen al servidor.

Enrutamiento (routing)

frutas.controller.js

import { Controller, Get } from '@nestjs/common';

@Controller('frutas')
export class FrutasController {
  @Get()
  findAll() {
    return 'Este metodo devolvera todas las frutas';
  }
}

Proveedores

Esta es la capa de servicios que gestiona la aplicación y que se inyectan como dependencia en los controladores. Es decir, el controlador delegará en los proveedores la ejecución de la lógica de negocio. Fichero frutas.service.ts.



import { Injectable } from '@nestjs/common';
import { Fruta } from './interfaces/fruta.interface';

@Injectable()
export class FrutasService {
  private readonly frutas: Fruta[] = [];

  create(fruta: Fruta) {
    this.cats.push(fruta);
  }

  findAll(): Fruta[] {
    return this.frutas;
  }
}

Interfaz en el fichero interfaces/cat.interface.ts:

export interface Fruta {
  name: string;
  tipo: string;
}

Como ahora tenemos un servicio de “Frutas”, podemos modificar el controlador para que haga uso de el, fichero cats.controller.ts.



import { Controller, Get, Post, Body } from '@nestjs/common';
import { CreateFrutaDto } from './dto/create-fruta.dto';
import { FrutasService } from './frutas.service';
import { Fruta } from './interfaces/fruta.interface';

@Controller('frutas')
export class FrutasController {
  constructor(private frutasService: FrutasService) {}

  @Post()
  async create(@Body() createFrutaDto: CreateFrutaDto) {
    this.frutasService.create(createFrutaDto);
  }

  @Get()
  async findAll(): Promise<Cat[]> {
    return this.frutasService.findAll();
  }
}

Más recursos de backend JS

Node JSJS en backend, código abierto y multiplataforma
Nest JSMontado sobre Node, soporta typescript, escribe aplicaciones rápidamente de forma escalable
Express JSSe despliega sobre Node, gestión de direccionamiento y soporte completo para montar un servidor
Node JS con MongoDBTe mostramos un ejemplo para conectar NodeJS con la base de datos NoSQL MongoDB

Recursos básicos JS

PrototypeAñadir propiedades de forma dinámica a un objeto
toLocaleStringHerramienta esencial para el formateo de fechas y números en aplicaciones internacionales
Recursividad y pilaUso de recursividad y funcionamiento de la pila JS
DesestructuraciónMecanismo para desempaquetar arrays y objetos
Manejo de StringsManejo básico de Strings, cadenas de caracteres
OperadoresUso de operadores de comparación y lógicos
PromesasGestión de peticiones asíncronas con promesas
SleepImplementación de la función sleep() en JS
ThisUso de la palabra reservada this en diferentes contextos
MapsTe enseñamos cuando usar Map y cuando Object con ejemplos
Switchery JSLibrería para modificar el estilo de los checkbox
Mejores libros Javascript EspañolEncuentra los mejores libros para aprender JS y convertirte en el desarrollador más demandado.
Exception JSManejo de excepciones en Javascript, control de errores y flujo de programa.
Obfuscator JavascriptProtege tu código Javascript Ofuscándolo
Javascript desde ceroAprende los conceptos básicos de Javascript, ponte en marcha.
LodashLodash hace que la manipulación de datos en JavaScript sea más fácil y menos propensa a errores
Formatdate JSFormateo y trabajo con fechas en javascript de forma sencilla.
DayjsBiblioteca para la gestión de fechas
padStartManeja cadenas de texto con la función padStart()