52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import { Controller, Get, Post, Req, Query, Headers, Param, Body, HttpException, HttpStatus, ForbiddenException, UseFilters, UsePipes, ValidationPipe, ParseIntPipe, UseGuards, SetMetadata, UseInterceptors } from '@nestjs/common';
|
|
import { CreatePostDto } from './post.dto';
|
|
import { DemoService } from './providers/demo/demo.service'
|
|
import { DemoFilter } from '../../core/filters/demo.filter'
|
|
import { DemoAuthGuard } from '../../core/guards/demo-auth.guard'
|
|
import { Roles } from '../../core/decorators/roles.decorator'
|
|
import { User } from '../../core/decorators/user.decorator'
|
|
import { LoggingInterceptor } from '../../core/interceptors/logging.interceptor'
|
|
import { TransformInterceptor } from '../../core/interceptors/transform.interceptor'
|
|
import { ErrorsInterceptor } from '../../core/interceptors/errors.interceptor'
|
|
|
|
@Controller('posts')
|
|
// @UseGuards(DemoAuthGuard)
|
|
// @UseFilters(DemoFilter)
|
|
// @ UseInterceptors(LoggingInterceptor)
|
|
export class PostsController {
|
|
|
|
constructor(private readonly demoService: DemoService) {}
|
|
|
|
@Get()
|
|
@UseInterceptors(TransformInterceptor)
|
|
@UseInterceptors(ErrorsInterceptor)
|
|
index() {
|
|
throw new ForbiddenException();
|
|
// return this.demoService.findAll();
|
|
}
|
|
|
|
@Get(':id')
|
|
show(@Param('id', ParseIntPipe) id) {
|
|
console.log('typeof id:', typeof id);
|
|
|
|
return {
|
|
title: `Post ${id}`
|
|
}
|
|
}
|
|
|
|
@Post()
|
|
// @UseFilters(DemoFilter)
|
|
@UsePipes(ValidationPipe)
|
|
// @SetMetadata('roles', ['member', 89])
|
|
// @Roles('member', 'tester')
|
|
@Roles(...['member', 'tester'])
|
|
store(@Body() post: CreatePostDto, @User('roles') roles) {
|
|
console.log('roles:', roles)
|
|
|
|
|
|
// throw new HttpException('没有权限!', HttpStatus.FORBIDDEN)
|
|
// throw new ForbiddenException('没有权限!')
|
|
this.demoService.create(post);
|
|
}
|
|
}
|