Decorator for aggregating all your @nestjs/swagger decorators into one place
npm install nestjs-swagger-api-specMotivation
===
Simplify the management of @Controller classes and methods (e.g., @Get route handler) by addressing the issue of OpenAPI decorators pollution from @nestjs/swagger. This library provides a streamlined approach to apply all relevant OpenAPI decorators using a single decorator.
* minimal @nestjs/common@^10
* minimal @nestjs/swagger@^7
For specific version details, refer to package.json.
```
$ npm install nestjs-swagger-api-spec
Apply the @ApiSpecification decorator to controllers or handlers to automatically add relevant @Api decorators. Decorator order is determined by ECMAScript iteration order for keys and can be adjusted using order suffixes.
typescript
import { ApiSpecification, ApiOptions } from 'nestjs-swagger-api-spec';const exampleSpec: ApiOptions = {
apiResponseOptions: (apiDecorator) => apiDecorator({ status: 200, description: "Applied in the middle, defined first." }),
apiOperationOptions1: (apiDecorator) => [
apiDecorator({
summary: "title",
description: "3",
}),
apiDecorator({ summary: "title", description: "Applied last, defined in the middle." }),
],
'apiOperationOptions-1': (apiDecorator) => apiDecorator({ status: 200, description: "Applied first, defined last." },
//...
}
@ApiSpecification(exampleSpec)
@Controller()
class Example {
@Get()
@ApiSpecification({
apiOperationOptions1: (apiDecorator) => apiDecorator({
summary: "customTitle",
description: "customDescription",
}),
// Additional decorators...
})
getExample() {
//...
}
}
`$3
The order of decorators can be customized by adding a suffix number to the options properties. Positive numbers define the order in ascending fashion, while negative numbers represent the order in descending fashion. For instance,
apiOperationOptions1 and 'apiOperationOptions-1' will apply decorators in different orders. Default order is 0.Caveats
* Decorator factories must be named with the Api prefix.
* Using property names with a format other than expected may result in errors.
*
ApiProperty, ApiPropertyOptional, and ApiHideProperty` decorators are not supported for route handler decorators.* Open issues or pull requests for support or contributions.
- MIT licensed.