@nestjs/common#ClassSerializerInterceptor TypeScript Examples
The following examples show how to use
@nestjs/common#ClassSerializerInterceptor.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: article.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@Post()
@ApiOperation({
summary: 'Create article API',
})
@ApiResponse({
status: HttpStatus.CREATED,
type: SwaggerBaseApiResponse(ArticleOutput),
})
@UseInterceptors(ClassSerializerInterceptor)
@ApiBearerAuth()
@UseGuards(JwtAuthGuard)
async createArticle(
@ReqContext() ctx: RequestContext,
@Body() input: CreateArticleInput,
): Promise<BaseApiResponse<ArticleOutput>> {
const article = await this.articleService.createArticle(ctx, input);
return { data: article, meta: {} };
}
Example #2
Source File: article.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@Get()
@ApiOperation({
summary: 'Get articles as a list API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse([ArticleOutput]),
})
@UseInterceptors(ClassSerializerInterceptor)
@ApiBearerAuth()
@UseGuards(JwtAuthGuard)
async getArticles(
@ReqContext() ctx: RequestContext,
@Query() query: PaginationParamsDto,
): Promise<BaseApiResponse<ArticleOutput[]>> {
this.logger.log(ctx, `${this.getArticles.name} was called`);
const { articles, count } = await this.articleService.getArticles(
ctx,
query.limit,
query.offset,
);
return { data: articles, meta: { count } };
}
Example #3
Source File: article.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@Get(':id')
@ApiOperation({
summary: 'Get article by id API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse(ArticleOutput),
})
@ApiResponse({
status: HttpStatus.NOT_FOUND,
type: BaseApiErrorResponse,
})
@UseInterceptors(ClassSerializerInterceptor)
@UseGuards(JwtAuthGuard)
async getArticle(
@ReqContext() ctx: RequestContext,
@Param('id') id: number,
): Promise<BaseApiResponse<ArticleOutput>> {
this.logger.log(ctx, `${this.getArticle.name} was called`);
const article = await this.articleService.getArticleById(ctx, id);
return { data: article, meta: {} };
}
Example #4
Source File: article.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@Patch(':id')
@ApiOperation({
summary: 'Update article API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse(ArticleOutput),
})
@UseInterceptors(ClassSerializerInterceptor)
@ApiBearerAuth()
@UseGuards(JwtAuthGuard)
async updateArticle(
@ReqContext() ctx: RequestContext,
@Param('id') articleId: number,
@Body() input: UpdateArticleInput,
): Promise<BaseApiResponse<ArticleOutput>> {
const article = await this.articleService.updateArticle(
ctx,
articleId,
input,
);
return { data: article, meta: {} };
}
Example #5
Source File: article.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@Delete(':id')
@ApiOperation({
summary: 'Delete article by id API',
})
@ApiResponse({
status: HttpStatus.NO_CONTENT,
})
@UseInterceptors(ClassSerializerInterceptor)
@UseGuards(JwtAuthGuard)
async deleteArticle(
@ReqContext() ctx: RequestContext,
@Param('id') id: number,
): Promise<void> {
this.logger.log(ctx, `${this.deleteArticle.name} was called`);
return this.articleService.deleteArticle(ctx, id);
}
Example #6
Source File: auth.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@Post('login')
@ApiOperation({
summary: 'User login API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse(AuthTokenOutput),
})
@ApiResponse({
status: HttpStatus.UNAUTHORIZED,
type: BaseApiErrorResponse,
})
@HttpCode(HttpStatus.OK)
@UseGuards(LocalAuthGuard)
@UseInterceptors(ClassSerializerInterceptor)
login(
@ReqContext() ctx: RequestContext,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@Body() credential: LoginInput,
): BaseApiResponse<AuthTokenOutput> {
this.logger.log(ctx, `${this.login.name} was called`);
const authToken = this.authService.login(ctx);
return { data: authToken, meta: {} };
}
Example #7
Source File: auth.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@Post('refresh-token')
@ApiOperation({
summary: 'Refresh access token API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse(AuthTokenOutput),
})
@ApiResponse({
status: HttpStatus.UNAUTHORIZED,
type: BaseApiErrorResponse,
})
@HttpCode(HttpStatus.OK)
@UseGuards(JwtRefreshGuard)
@UseInterceptors(ClassSerializerInterceptor)
async refreshToken(
@ReqContext() ctx: RequestContext,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
@Body() credential: RefreshTokenInput,
): Promise<BaseApiResponse<AuthTokenOutput>> {
this.logger.log(ctx, `${this.refreshToken.name} was called`);
const authToken = await this.authService.refreshToken(ctx);
return { data: authToken, meta: {} };
}
Example #8
Source File: user.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@UseGuards(JwtAuthGuard)
@ApiBearerAuth()
@UseInterceptors(ClassSerializerInterceptor)
@Get('me')
@ApiOperation({
summary: 'Get user me API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse(UserOutput),
})
@ApiResponse({
status: HttpStatus.UNAUTHORIZED,
type: BaseApiErrorResponse,
})
async getMyProfile(
@ReqContext() ctx: RequestContext,
): Promise<BaseApiResponse<UserOutput>> {
this.logger.log(ctx, `${this.getMyProfile.name} was called`);
const user = await this.userService.findById(ctx, ctx.user.id);
return { data: user, meta: {} };
}
Example #9
Source File: user.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
@UseInterceptors(ClassSerializerInterceptor)
@Get()
@ApiOperation({
summary: 'Get users as a list API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse([UserOutput]),
})
@ApiResponse({
status: HttpStatus.UNAUTHORIZED,
type: BaseApiErrorResponse,
})
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles(ROLE.ADMIN, ROLE.USER)
async getUsers(
@ReqContext() ctx: RequestContext,
@Query() query: PaginationParamsDto,
): Promise<BaseApiResponse<UserOutput[]>> {
this.logger.log(ctx, `${this.getUsers.name} was called`);
const { users, count } = await this.userService.getUsers(
ctx,
query.limit,
query.offset,
);
return { data: users, meta: { count } };
}
Example #10
Source File: user.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
// TODO: ADD RoleGuard
// NOTE : This can be made a admin only endpoint. For normal users they can use GET /me
@UseInterceptors(ClassSerializerInterceptor)
@Get(':id')
@ApiOperation({
summary: 'Get user by id API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse(UserOutput),
})
@ApiResponse({
status: HttpStatus.NOT_FOUND,
type: BaseApiErrorResponse,
})
async getUser(
@ReqContext() ctx: RequestContext,
@Param('id') id: number,
): Promise<BaseApiResponse<UserOutput>> {
this.logger.log(ctx, `${this.getUser.name} was called`);
const user = await this.userService.getUserById(ctx, id);
return { data: user, meta: {} };
}
Example #11
Source File: user.controller.ts From nestjs-starter-rest-api with MIT License | 6 votes |
// TODO: ADD RoleGuard
// NOTE : This can be made a admin only endpoint. For normal users they can use PATCH /me
@Patch(':id')
@ApiOperation({
summary: 'Update user API',
})
@ApiResponse({
status: HttpStatus.OK,
type: SwaggerBaseApiResponse(UserOutput),
})
@ApiResponse({
status: HttpStatus.NOT_FOUND,
type: BaseApiErrorResponse,
})
@UseInterceptors(ClassSerializerInterceptor)
async updateUser(
@ReqContext() ctx: RequestContext,
@Param('id') userId: number,
@Body() input: UpdateUserInput,
): Promise<BaseApiResponse<UserOutput>> {
this.logger.log(ctx, `${this.updateUser.name} was called`);
const user = await this.userService.updateUser(ctx, userId, input);
return { data: user, meta: {} };
}
Example #12
Source File: main.ts From bank-server with MIT License | 6 votes |
async function bootstrap(): Promise<void> {
initializeTransactionalContext();
patchTypeORMRepositoryWithBaseRepository();
const app = await NestFactory.create<NestExpressApplication>(
AppModule,
new ExpressAdapter(),
{ cors: true },
);
app.enable('trust proxy');
app.use(helmet());
app.use(RateLimit({ windowMs: 15 * 60 * 1000, max: 200 }));
app.use(compression());
app.use(morgan('combined'));
app.setGlobalPrefix('bank');
const reflector = app.get(Reflector);
app.useGlobalInterceptors(new ClassSerializerInterceptor(reflector));
app.useGlobalFilters(
new HttpExceptionFilter(reflector),
new QueryFailedFilter(reflector),
);
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
transform: true,
dismissDefaultMessages: true,
validationError: { target: false },
}),
);
setupSwagger(app);
const configService = app.get(ConfigService);
await app.listen(configService.get('PORT'));
}
Example #13
Source File: serialization.decorator.ts From nest-js-boilerplate with MIT License | 5 votes |
Serialize = (role: any) => (proto: any, propName: any, descriptor: any) => {
setSerializeType(proto[propName], role);
UseInterceptors(ClassSerializerInterceptor)(proto, propName, descriptor);
UseInterceptors(SerializeInterceptor)(proto, propName, descriptor);
}