Primero, necesitas un controlador en tu aplicación NestJS. Este se encargará de gestionar las solicitudes entrantes.
import { Controller, Get, Headers } from '@nestjs/common';
@Controller('example')
export class ExampleController {
@Get()
getHeaders(@Headers() headers: any): string {
return `Headers: ${JSON.stringify(headers)}`;
}
}
En este ejemplo, estamos utilizando el decorador @Headers()
para inyectar todos los headers de la solicitud en nuestro método getHeaders
.
Si necesitas acceder a un header específico, puedes hacerlo de la siguiente manera:
import { Controller, Get, Headers } from '@nestjs/common';
@Controller('example')
export class ExampleController {
@Get('specific-header')
getSpecificHeader(@Headers('user-agent') userAgent: string): string {
return `User-Agent: ${userAgent}`;
}
}
Aquí, el decorador @Headers('user-agent')
extrae específicamente el valor del header User-Agent
.
NestJS permite usar pipes para validar y transformar los headers antes de procesarlos. Por ejemplo, puedes crear un pipe personalizado para verificar que un header específico esté presente.
import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException } from '@nestjs/common';
@Injectable()
export class HeaderValidationPipe implements PipeTransform {
transform(value: any, metadata: ArgumentMetadata) {
if (!value['custom-header']) {
throw new BadRequestException('custom-header is required');
}
return value;
}
}
Luego, aplicas este pipe en tu controlador:
import { Controller, Get, Headers, UsePipes } from '@nestjs/common';
import { HeaderValidationPipe } from './header-validation.pipe';
@Controller('example')
export class ExampleController {
@Get('validate-header')
@UsePipes(new HeaderValidationPipe())
validateHeader(@Headers() headers: any): string {
return `Custom-Header: ${headers['custom-header']}`;
}
}
Jorge García
Fullstack developer