Parámetros en Endpoints REST API con Nest.js
Clase 7 de 23 • Curso de Backend con NestJS
Resumen
Existen diferentes tipos de endpoints que se identifican a través de los Verbos HTTP. Cada uno con un propósito determinado siguiendo el protocolo.
Obtención de datos con GET
En particular, el verbo GET suele utilizarse para endpoints que permiten la obtención de datos como un producto o una lista de productos.
Es frecuente la necesidad de que este tipo de endpoints también reciban información dinámica en las URL como el identificador de un producto.
Para capturar estos datos en NestJS, tienes que importar el decorador Param
desde @nestjs/common
y emplearlo de la siguiente manera en tus endpoints.
import { Controller, Get, Param } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get('product/:idProduct')
getProduct1(@Param() params: any): string {
return `Producto id: ${params.idProduct}`;
}
@Get('product/:idProduct')
getProduct2(@Param('idProduct') idProduct: string): string {
return `Producto id: ${idProduct}`;
}
}
Observa el decorador @Get()
que posee el nombre del endpoint seguido de un :idProduct
que identifica al parámetro dinámico. Luego puedes implementar el decorador @Param()
para capturar todos los parámetros juntos en un objeto o @Param('idProduct')
para capturar únicamente el parámetro con dicho nombre.
De esta forma, accede en un navegador a localhost:3000/product/12345
para capturar ese 12345
y posteriormente utilizarlo.
Contribución creada por: Kevin Fiorentino.
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}`;
}
}