Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

GET: recibir parámetros

7/23
Recursos
import { ..., Param } from '@nestjs/common';
...

@Controller()
export class AppController {
  ...

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

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

Aportes 14

Preguntas 4

Ordenar por:

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

Para obtener parámetros de la URL usas el decorador @Params

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

Nota: Utiliza los plurales para tus endpoints. Ejemplo:

api.example.con/tasks/
api.example.con/users/

Para obtener parámetros de la URL usas el decorador @Param

Para obtener un parámetro:

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

Para obtener dos parámetros:

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

Si desean recibir un parametro y hacer una prevalidación del mismo por ejemplo que debe ser un entero. Existen los pipe (estan más adelante) y uno simple es así:

@Get('products/:id')
  getProduct(
    @Param(
      'id',
      new ParseIntPipe({ errorHttpStatusCode: HttpStatus.NOT_ACCEPTABLE }),
    )
    id: number,
  ) {
    return `Product ${id}`;
  }

Otra manera de recibir más de un parámetro

@Get('categories/:categoryId/products/:productId')
  getCategory(@Param() { categoryId, productId }) {
    return `Product ${productId}, Category ${categoryId}`;
  }

Por defecto todos estos archivos se crean en services desconoco si es una buena practica pero continue realizando los ejercicios de esta manera para poner una ruta dinamica consegui que funcionara de la siquiente manera

este es el archivo app.service.ts

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

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }

  getNewEndpoint(): string {
    return 'New endpoint';
  }

  getPost(@Param('PostId') PostId: string): string {
    return `This action returns a #${PostId} `;
  }
}

y este el archivo app.controller.ts

import { Controller, Get, Param } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
  // new endpoint
  @Get('new')
  getNewEndpoint(): string{
    return this.appService.getNewEndpoint();
  }
  @Get('Posts/:PostId')
  getPost(@Param('PostId') PostId: string): string{
    return this.appService.getPost(`${PostId}`);
  }

}

Se me hace muy similar a spring 😄

Nota mental => Usar plurales para endpoints

Ejemplo con 2 parametros

Decorador @get y @Param

buenas practicas en REST API

Explica muy bien el profe.

👏

Excelente clase.

Excelente clase, epa ya iba a preguntar por los query, a por ello…