Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Separación de responsabilidades

9/23
Recursos

nest g cor controllers/categories --flat
src/controllers/categories.controller.ts

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

@Controller('categories') // 👈 Route
export class CategoriesController {

  @Get(':id/products/:productId')
  getCategory(
    @Param('productId') productId: string,
    @Param('id') id: string
  ) {
    return `product ${productId} and ${id}`;
  }
}

nest g co controllers/products --flat
src/controllers/products.controller.ts


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

@Controller('products') // 👈 Route
export class ProductsController {
  @Get()
  getProducts(
    @Query('limit') limit = 100,
    @Query('offset') offset = 0,
    @Query('brand') brand: string,
  ) {
    return `products limit=> ${limit} offset=> ${offset} brand=> ${brand}`;
  }

  @Get('filter')
  getProductFilter() {
    return `yo soy un filter`;
  }

  @Get(':productId')
  getProduct(@Param('productId') productId: string) {
    return `product ${productId}`;
  }
}

src/app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ProductsController } from './controllers/products.controller';
import { CategoriesController } from './controllers/categories.controller';

@Module({
  imports: [],
  controllers: [
   AppController,
   ProductsController, // 👈 New controller
   CategoriesController  // 👈 New controller
  ],
  providers: [AppService],
})
export class AppModule {}

Aportes 21

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Para crear controladores puedes usar el generador de código de NestJS con el siguiente comando:
nest g co controllers/categories --flat

Hola a todos, en mi caso se me hace mejor agregarlos los controladores por carpetas 😁

nest g co controllers/products
nest g co controllers/categories
nest g co controllers/brands
nest g co controllers/users
nest g co controllers/costumers
nest g co controllers/orders

Para memorizar los comandos basicos para generar modulo controlador y servicio yo lo utilizo recordando la palabra Mocos (si, mocos)

nest g mo products
nest g co products
nest g s products

Y esto me crea la carpeta con los archivos que necesito.

Codigo para una arquitectura de carpetas escalable, si en un futuro el proyecto tiene reviews o cualquier feature lo insertamos dentro de modules/review, ademas de poder incorporar DTOs e Interfaces dentro de estas subcarpetas.

nest g co modules/order/controller/order --flat
nest g mo modules/order/module/order --flat
nest g s modules/order/service/order --flat
nest g co modules/user/controller/user --flat
nest g mo modules/user/module/user --flat
nest g s modules/user/service/user --flat
nest g co modules/customer/controller/customer --flat
nest g mo modules/customer/module/customer --flat
nest g s modules/customer/service/customer --flat
nest g co modules/category/controller/category --flat
nest g mo modules/category/module/category --flat
nest g s modules/category/service/category --flat
nest g co modules/product/controller/product --flat
nest g mo modules/product/module/product --flat
nest g s modules/product/service/product --flat
nest g co modules/brand/controller/brand --flat
nest g mo modules/brand/module/brand --flat
nest g s modules/brand/service/brand --flat

Este es el resultado graficamente:

nest g co controllers/orders --flat
nest g co controllers/users --flat
nest g co controllers/customers --flat
nest g co controllers/categories --flat
nest g co controllers/products --flat
nest g co controllers/brands --flat   

Muy buen curso!!! todo muy bien explicado! Es primera vez que tomo un curso con este profesor y la verdad es que es de los mejores que he visto. Espero que el curso siga con la misma calidad hasta finalizarlo. Felicitaciones @Nicolas Molina.

La arquitectura de carpestas no es trivial es como para una clase entera, no todas escalan ni trabajan igual, hay alguna referencia dependiendo de como se trabaje, en las arquitecturas hexagonales proponen algunas, aun no se cual es mejor 😭

Hola, para el reto simplemente debemos correr los comandos:

nest g controller controllers/orders --flat
nest g controller controllers/customers --flat
nest g controller controllers/users --flat
nest g controller controllers/brands --flat

y luego creamos los métodos correspondientes dentro de los controladores

Que hermoso es Nest.js

Siento que agrupar los controllers en una sola carpeta no lo hace tan mantenible ni modularizado el proyecto como lo predica NestJS y Angular

Puede ser útil para probar rápido desde la terminal los endpoints:

curl "localhost:3000/products?brand=platzi" 

Principio de una sola responsabilidad (SOLID) - Nest

Me pones muy nervioso no usando el intellisence para los imports automáticos -_-

Por que se define el SRP como hacer una cosa ó entenderlo como una unica responsabilidad, es cierto que si, pero la premisa es, “un modulo, debe tener una y solo una razon para cambiar …”

crear controladores dentro de una sola carpeta llamada controllers

crear nuevos controladores

I ❤️ NestJS 🐈

Espera un momento app.module.ts hola Angular ajja

👏

Ojo, creo que eso de borrar la ruta de un controlador, en realidad es obligatorio no opcional.

Para mi en lo personal divido mis controladores y servicios en módulos:

nest g co module/order/controllers/order --flat
nest g co module/user/controllers/user --flat
nest g co module/customer/controllers/customer --flat
nest g co module/category/controllers/category --flat
nest g co module/product/controllers/product --flat
nest g co module/brand/controllers/brand --flat

Entonces luego dentro de cada módulo creo los servicios