目錄
NestJS 控制器(Controllers)
NestJS 是一個基於 TypeScript 的 Node.js 框架,用於構建高效,可擴展的企業級服務器端應用程序。它提供了一個模塊化的架構,可以讓您構建應用程序,並提供了一系列的工具,可以讓您快速開發和部署應用程序。
NestJS 控制器是一個重要的概念,它是一個用於接收 HTTP 請求並返回响應的類。它是一個模塊,可以讓您將應用程序的功能分解為更小的部分,並將它們放在不同的控制器中。
NestJS 控制器可以使用 @Controller()
裝飾器來定義,它接受一個字符串參數,用於指定控制器的路由前綴。
@Controller('users')
export class UsersController {
// ...
}
控制器中的方法可以使用 @Get()
,@Post()
,@Put()
,@Delete()
等裝飾器來定義,它們接受一個字符串參數,用於指定該方法的路由。
@Controller('users')
export class UsersController {
@Get('/')
getUsers() {
// ...
}
}
NestJS 控制器可以使用 @UseInterceptors()
裝飾器來添加拦截器,它可以在控制器的方法被調用之前或之後執行一些額外的操作。
@Controller('users')
@UseInterceptors(LoggingInterceptor)
export class UsersController {
@Get('/')
getUsers() {
// ...
}
}
NestJS 控制器可以使用 @UsePipes()
裝飾器來添加管道,它可以在控制器的方法被調用之前對請求參數進行驗證和轉換。
@Controller('users')
@UsePipes(ValidationPipe)
export class UsersController {
@Post('/')
createUser(@Body() user: User) {
// ...
}
}
NestJS 控制器可以使用 @UseGuards()
裝飾器來添加守衛,它可以在控制器的方法被調用之前檢查請求是否有效。
@Controller('users')
@UseGuards(AuthGuard)
export class UsersController {
@Get('/')
getUsers() {
// ...
}
}
NestJS 控制器可以使用 @Render()
裝飾器來渲染模板,它可以在控制器的方法被調用之後返回渲染後的 HTML 頁面。
@Controller('users')
export class UsersController {
@Get('/')
@Render('users')
getUsers() {
// ...
}
}
NestJS 控制器可以使用 @Header()
裝飾器來設置 HTTP 響應頭,它可以在控制器的方法被調用之後設置響應頭。
@Controller('users')
export class UsersController {
@Get('/')
@Header('Cache-Control', 'none')
getUsers() {
// ...
}
}
NestJS 控制器可以使用 @Redirect()
裝飾器來重定向,它可以在控制器的方法被調用之後重定向到另一個 URL。
@Controller('users')
export class UsersController {
@Get('/')
@Redirect('/login')
getUsers() {
// ...
}
}
NestJS 控制器可以使用 @Res()
裝飾器來訪問 HTTP 響應對象,它可以在控制器的方法被調用之後訪問響應對象,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/')
getUsers(@Res() res) {
res.status(HttpStatus.OK).send('OK');
}
}
NestJS 控制器可以使用 @Req()
裝飾器來訪問 HTTP 請求對象,它可以在控制器的方法被調用之前訪問請求對象,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/')
getUsers(@Req() req) {
const userId = req.query.userId;
// ...
}
}
NestJS 控制器可以使用 @Param()
裝飾器來訪問路由參數,它可以在控制器的方法被調用之前訪問路由參數,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/:userId')
getUser(@Param('userId') userId: string) {
// ...
}
}
NestJS 控制器可以使用 @Body()
裝飾器來訪問請求體,它可以在控制器的方法被調用之前訪問請求體,並對其進行操作。
@Controller('users')
export class UsersController {
@Post('/')
createUser(@Body() user: User) {
// ...
}
}
NestJS 控制器可以使用 @Query()
裝飾器來訪問查詢參數,它可以在控制器的方法被調用之前訪問查詢參數,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/')
getUsers(@Query('page') page: number) {
// ...
}
}
NestJS 控制器可以使用 @Headers()
裝飾器來訪問請求頭,它可以在控制器的方法被調用之前訪問請求頭,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/')
getUsers(@Headers('x-api-key') apiKey: string) {
// ...
}
}
NestJS 控制器可以使用 @Session()
裝飾器來訪問會話,它可以在控制器的方法被調用之前訪問會話,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/')
getUsers(@Session() session: Express.Session) {
// ...
}
}
NestJS 控制器可以使用 @FileInterceptor()
裝飾器來添加文件拦截器,它可以在控制器的方法被調用之前對上傳的文件進行操作。
@Controller('users')
export class UsersController {
@Post('/avatar')
@FileInterceptor('avatar')
uploadAvatar(@UploadedFile() avatar) {
// ...
}
}
NestJS 控制器可以使用 @Header()
裝飾器來訪問 HTTP 響應頭,它可以在控制器的方法被調用之後訪問響應頭,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/')
getUsers(@Res() res) {
const etag = res.getHeader('ETag');
// ...
}
}
NestJS 控制器可以使用 @Cookie()
裝飾器來訪問 Cookie,它可以在控制器的方法被調用之前訪問 Cookie,並對其進行操作。
@Controller('users')
export class UsersController {
@Get('/')
getUsers(@Cookie('sessionId') sessionId: string) {
// ...
}
}
NestJS 控制器可以使用 @Next()
裝飾器來訪問下一個中間件,它可以在控制器的方法被調用之後訪問下一個中間件,並
推薦閱讀文章
NestJS 控制器(Controllers) 文件
Controllers in NestJS
How to Build a Modern App Using NestJS and MongoDB
NestJS Crash Course
Introduction to NestJS for Angular Developers</a