在NestJs中 @Controller() 如何控制路由?
2023-12-18 00:12:25
在NestJs中,@Controller() 装饰器是用来标记一个类为控制器类的装饰器。当控制器类被@Controller() 装饰器标记后,Nest 会将其添加到依赖注入容器中,并自动注册相应的路由。这意味着,我们可以使用 @Controller() 装饰器来定义一个控制器的路由,并且 Nest 将自动根据该路由来处理请求。
举个例子,假设我们想创建一个简单的 NestJS 应用程序来管理我们的任务。我们可以使用以下代码创建一个控制器类:
import { Controller, Get, Post } from '@nestjs/common';
@Controller('tasks')
export class TasksController {
@Get()
getTasks() {
return 'Get all tasks';
}
@Post()
createTask() {
return 'Create a new task';
}
}
在这个例子中,我们使用 @Controller() 装饰器来标记 TasksController 类为一个控制器类,并指定其路由前缀为 /tasks。这意味着,当我们访问 /tasks 路由时,NestJS 将会调用这个控制器的 getTasks() 方法。同样地,当我们访问 /tasks 路由时,NestJS 将会调用这个控制器的 createTask() 方法。
除了使用 @Controller() 装饰器来标记控制器类之外,我们还可以使用 @Get(), @Post(), @Put(), @Delete() 等装饰器来定义控制器的具体路由。例如,我们可以使用以下代码来定义一个获取所有任务的路由:
@Get()
getTasks() {
return 'Get all tasks';
}
在这个例子中,我们使用 @Get() 装饰器来定义一个获取所有任务的路由。这意味着,当我们访问 /tasks 路由时,NestJS 将会调用这个控制器的 getTasks() 方法。
同理,我们还可以使用 @Post(), @Put(), @Delete() 等装饰器来定义控制器的其他路由。例如,我们可以使用以下代码来定义一个创建新任务的路由:
@Post()
createTask() {
return 'Create a new task';
}
在这个例子中,我们使用 @Post() 装饰器来定义一个创建新任务的路由。这意味着,当我们访问 /tasks 路由时,NestJS 将会调用这个控制器的 createTask() 方法。
通过使用 @Controller() 装饰器和 @Get(), @Post(), @Put(), @Delete() 等装饰器,我们可以轻松地定义控制器的路由,并处理不同的HTTP请求。