ninghao-nestjs/src/modules/posts/posts.controller.ts

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);
}
}