Built-in Pipes

The Parse Pipes

PipeConverts / checksExample input
ParseIntPipeInteger/products/7
ParseFloatPipeDecimal number?lat=12.97
ParseBoolPipe"true"/"false"?inStock=true
ParseUUIDPipeUUID string (v4 by default)/orders/9f1c...
ParseEnumPipeValue of a TS enum?status=SHIPPED
ParseArrayPipeComma list or JSON array?ids=1,2,3
DefaultValuePipeDefault when missing?page absent
ParseDatePipe (NestJS 11)ISO date string to Date?from=2026-01-01
ValidationPipeDTO with class-validator rulesRequest 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/123

Example 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}