【Nestjs学习日记】Nest Controller

Nest Controller

在NestJS中,Controller是应用程序的核心组件之一。它负责处理传入的请求并返回响应。Controller充当了路由的处理器,将传入的请求映射到相应的处理函数上。

在这个【NestJS学习日记】系列的本篇中,我们将重点探索NestJS中的Controller。我们将学习如何创建和组织Controller,如何处理不同类型的请求,以及如何在Controller中实现各种功能。

NestJS的Controller使用装饰器来定义路由和请求处理函数。我们可以使用@Controller装饰器来创建一个Controller类,然后使用@Get@Post@Put等装饰器来定义处理不同HTTP方法的请求的方法。

通过使用NestJS的Controller,我们可以轻松地创建RESTful API,定义路由和请求处理逻辑,并将它们组织在一起。我们还可以使用依赖注入来注入其他服务或依赖项,实现更高级的功能和复杂的业务逻辑。

在接下来的文章中,我们将深入研究NestJS中Controller的各个方面,包括路由处理、请求参数获取、响应处理、中间件的使用和错误处理等。通过学习NestJS的Controller,我们将能够构建出强大而灵活的后端应用程序。让我们一起开始这个令人兴奋的学习之旅,掌握NestJS的Controller的技能!

作者:markzzw 时间:2024-1-29 线上代码:CodeSandbox Github:zhangzewei/nest-learning-tutorial

改变路由

nest 通过 Controller 装饰器进行路由的处理,在新建的 nest 项目中,app.controller.ts 为主路由,即访问 '/' 就能匹配到,不过也可以修改 @Controller('app'),将访问路径改为 '/app',即需要访问 '/app' 才能够匹配到 app.controller.ts

app.controller.ts

ts 复制代码
@Controller('app')
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

Get 请求

这段代码中可以看到 getHello 方法被一个 @Get 装饰器装饰,这个装饰器就是用来匹配get请求的,下方的函数就是用于处理匹配到的get请求的处理函数,getHello 只是一个函数名字,可以更换为其他例如: getA 或者 getB,重要的是函数内部是处理匹配的路由的方法。

Get 装饰器中可以传入一个字符串作为路径匹配,达到更精确的处理,例如: @Get('hello'),那么就会匹配到 'app/hello' 路径。

还可以传入参数,用冒号指代参数,例如: @Get('hello/:name'),然后我们在处理函数里面需要用到 @Param('name'),获取到参数。

@Param 获取路径参数

ts 复制代码
@Get('hello/:name')
getHello(@Param('name') name: string): string {
    return `Say hello to ${name}`;
}

在代码中,getHello 函数新增一个 name 传入参数,使用 @Param('name') 进行修饰,就能够在 getHello 中获取到路径中的 name 参数;同样 传入参数 不一定为与路径中的参数同名,可以为其他的形参,只要 @Param 传入的字符串与路径参数一样就行。

Post 请求

与 Get 请求类似,nestjs 提供了 @Post 装饰器对post请求进行匹配,将路径传入 @Post 装饰器,然后在postman进行post请求,就能够匹配得到。

@Body 获取请求 body

在 post 请求中,我们使用了另一个装饰器 @Body 对传入参数进行修饰,使的参数能够获取到请求中的 body,如上图所示。

Put 请求

Post 请求一般是使用于新增,put 一般使用于更改请求,所以在 put 请求中会带入某个特定的参数,例如:id参数;用来对该特定数据进行修改。所以在 put 请求中会同时使用到 @Param 和 @Body 装饰器。

Delete 请求

Delete 请求也可以通过 @Param 获取需要删除的对象的id或者关键字进行删除。

总结

以上就是 nestjs controller 的 restful API 的基本用法:getpostputdelete,也提到了获取路径参数和body的方法。

相关推荐
网络点点滴1 小时前
透传属性$attrs
前端·javascript·vue.js
90后的晨仔1 小时前
OpenClaw macOS 完整安装指南
前端
Moment1 小时前
尤雨溪宣布 Vite+ 正式开源,前端工具链要大一统了
前端·javascript·面试
喵叔哟1 小时前
5. 【Blazor全栈开发实战指南】--Blazor组件基础
开发语言·javascript·ecmascript
sunny_2 小时前
📖 2026年 大厂前端面试手写题库已开源(2.3k star)
前端·面试·github
IT_陈寒2 小时前
Vue组件复用率提升300%?这5个高阶技巧让你的代码焕然一新!
前端·人工智能·后端
We་ct2 小时前
LeetCode 79. 单词搜索:DFS回溯解法详解
前端·算法·leetcode·typescript·深度优先·个人开发·回溯
ujainu2 小时前
Electron 实战:将用户输入保存到本地文件 —— 基于 `fs.writeFileSync` 与 IPC 的安全写入方案
javascript·安全·electron
小奶包他干奶奶3 小时前
将svg对象化,并动态修改svg图标的颜色、尺寸等
前端·html
Lee川3 小时前
React 快速入门:Vue 开发者指南
前端·vue.js·react.js