Careeroza
Built-in Pipes
The Parse Pipes
| Pipe | Converts / checks | Example input |
|---|---|---|
ParseIntPipe | Integer | /products/7 |
ParseFloatPipe | Decimal number | ?lat=12.97 |
ParseBoolPipe | "true"/"false" | ?inStock=true |
ParseUUIDPipe | UUID string (v4 by default) | /orders/9f1c... |
ParseEnumPipe | Value of a TS enum | ?status=SHIPPED |
ParseArrayPipe | Comma list or JSON array | ?ids=1,2,3 |
DefaultValuePipe | Default when missing | ?page absent |
ParseDatePipe (NestJS 11) | ISO date string to Date | ?from=2026-01-01 |
ValidationPipe | DTO with class-validator rules | Request body |
Using Them
src/orders/orders.controller.ts
import { Controller, DefaultValuePipe, Get, Param, ParseArrayPipe, ParseEnumPipe, ParseIntPipe, ParseUUIDPipe, Query } from '@nestjs/common';
export enum OrderStatus { PENDING = 'PENDING', PAID = 'PAID', SHIPPED = 'SHIPPED', DELIVERED = 'DELIVERED' }
@Controller('orders')
export class OrdersController {
@Get(':id')
findOne(@Param('id', new ParseUUIDPipe({ version: '4' })) id: string) {
return { id };
}
@Get()
findAll(
@Query('status', new ParseEnumPipe(OrderStatus, { optional: true })) status?: OrderStatus,
@Query('page', new DefaultValuePipe(1), ParseIntPipe) page = 1,
@Query('ids', new ParseArrayPipe({ items: Number, separator: ',', optional: true })) ids?: number[],
) {
return { status, page, ids };
}
}Example
curl "http://localhost:3000/orders?status=SHIPPED&ids=4,8,15"
curl "http://localhost:3000/orders?status=LOST"
curl http://localhost:3000/orders/123Example output
{"status":"SHIPPED","page":1,"ids":[4,8,15]}
{"message":"Validation failed (enum string is expected)","error":"Bad Request","statusCode":400}
{"message":"Validation failed (uuid v4 is expected)","error":"Bad Request","statusCode":400}