了解NestJS控制器(Controllers)的功能與應用

了解NestJS控制器(Controllers)的功能與應用

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)官方文件
使用 NestJS 建立 REST APIs
如何使用 NestJS 建立 REST API
如何使用 NestJS 建立 REST API
使用 NestJS 建立 REST API – YouTube</a

延伸閱讀本站文章

更多NestJS相關文章

推薦學習youtube影片

發佈留言