返回

在NestJs中 @Controller() 如何控制路由?

前端

在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请求。