This library combines common @nestjs/swagger, class-transformer and class-validator decorators that are used together into one decorator for full Nest.js DTO lifecycle including OpenAPI schema descriptions.
| DTO with nestjs-swagger-dto | DTO without nestjs-swagger-dto |
|---|---|
|
|
npm i nestjs-swagger-dto
This library contains the following decorators
| Name | Description |
|---|---|
| IsBoolean | boolean |
| IsConstant | constant |
| IsDate | date / date-time |
| IsEnum | enum object / array of values |
| IsNested | nested DTO |
| IsNumber | numbers |
| IsObject | typed plain js objects |
| IsString | strings |
| IsUnknown | any json value |
All of the decorators support the following parameters:
| Name | Description |
|---|---|
| description | adds description |
| deprecated | deprecates a field |
| example | adds example |
| name | sets the name for serialized property |
| optional | makes property optional |
| nullable | makes property nullable |
| isArray | changes the type of property to array of items of this type |
Also decorators have additional parameters like: min, max for IsNumber.
You can also validate request headers using TypedHeaders decorator.
export class TestHeaders {
@IsString({
// NOTE: header names will be lowercased automatically
name: 'country-code',
maxLength: 2,
minLength: 2,
example: 'US',
})
countryCode!: string;
@IsString({
name: 'timestamp',
isDate: { format: 'date-time' },
})
timestamp!: string;
}
@Controller({ path: 'test', version: '1' })
export class TestController {
@Get()
async test(@TypedHeaders() headers: TestHeaders): Promise<string> {
return headers.countryCode;
}
}
Bootstrapped with: create-ts-lib-gh
This project is MIT Licensed.
Generated using TypeDoc