返回

Nest 核心概念:控制器

前端

    在 Nest 系列上一篇中,我们讨论了 Nest 的模块,它是组织 Nest 应用的基本结构。Nest 应用接收请求,交给控制器处理请求,控制器中又调用服务,完成具体的业务逻辑,最后返回结果给调用者。

    ### 控制器是什么?

    控制器是 Nest.js 中用于处理请求和协调数据流向服务(通常是服务的业务逻辑)的类。它充当了应用程序和服务之间的中间层,将请求路由到适当的服务,并处理来自服务的数据。

    ### 控制器如何工作?

    控制器通过使用装饰器注册路由来处理请求。装饰器是一种元数据,可以在类或方法上使用,以提供有关类或方法的其他信息。在 Nest.js 中,有许多内置的装饰器可以用于处理请求,例如 `@Get()`、`@Post()`、`@Put()` 和 `@Delete()`。

    当请求到达控制器时,它会根据请求的路由被路由到适当的控制器方法。然后,控制器方法负责处理请求并返回响应。

    ### 控制器有什么用?

    控制器有很多用途,包括:

    - 处理请求并协调数据流向服务
    - 验证请求数据
    - 返回响应给调用者
    - 提供与视图的交互
    - 实现业务逻辑

    ### 控制器装饰器

    控制器装饰器用于注册路由和提供其他有关控制器的信息。常用的控制器装饰器包括:

    - `@Controller()`: 注册控制器
    - `@Get()`, `@Post()`, `@Put()``@Delete()`: 分别用于注册 GET、POST、PUT 和 DELETE 请求的路由
    - `@UseGuards()`: 用于注册守卫
    - `@UsePipes()`: 用于注册管道

    ### 控制器路由

    控制器路由用于将请求路由到适当的控制器方法。路由可以是简单的字符串,也可以是正则表达式。

    ### 控制器方法

    控制器方法是控制器类中的方法,用于处理请求。控制器方法可以具有不同的装饰器,例如 `@Get()`, `@Post()`, `@Put()` 和 `@Delete()`,以指定它们处理的请求类型。

    ### 结论

    控制器是 Nest.js 中用于处理请求和协调数据流向服务的类。它们通过使用装饰器注册路由,并通过调用服务来处理请求。控制器有很多用途,包括处理请求、验证请求数据、返回响应给调用者、提供与视图的交互以及实现业务逻辑。