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<name> decorators. Decorator order is determined by ECMAScript iteration order for keys and can be adjusted using order suffixes.
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() {
//...
}
}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.
- Decorator factories must be named with the Api prefix.
- Using property names with a format other than expected may result in errors.
ApiProperty,ApiPropertyOptional, andApiHidePropertydecorators are not supported for route handler decorators.- Future Nest versions breaking the contract of applyDecorators may impact the implementation.
- Open issues or pull requests for support or contributions.