Para obtener parámetros de la URL usas el decorador @Params
@Get('products/:productId')
getProduct(@Param('productId') productId: string) {
return `product ${productId}`;
}
Introducción a NestJS
¿Qué es NestJS?
Crea tu primer proyecto con NestJS
Estructura de aplicaciones en NestJS
Presentación del proyecto: Platzi Store
Repaso a TypeScript: tipos y POO
REST API
Introducción a controladores
GET: recibir parámetros
GET: parámetros query
Separación de responsabilidades
Instalación de Postman o Insomia
POST: método para crear
Métodos PUT y DELETE para editar y eliminar
Códigos de estado o HTTP response status codes
Integridad de datos
Introducción a servicios: crea tu primer servicio
Implementando servicios en tu controlador
Manejo de errores con throw y NotFoundException
Introducción a pipes: usa tu primer pipe
Crea tu propio pipe
Data Transfers Objects
Validando parámetros con class-validator y mapped-types
Evitando parámetros incorrectos
Próximos pasos
Reto: controladores y servicios restantes
Continúa con el Curso de NestJS: Programación Modular
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
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
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…
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.