【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的方法。

相关推荐
Json____几秒前
学法减分交管12123模拟练习小程序源码前端和后端和搭建教程
前端·后端·学习·小程序·uni-app·学法减分·驾考题库
迂 幵9 分钟前
vue el-table 超出隐藏移入弹窗显示
javascript·vue.js·elementui
上趣工作室13 分钟前
vue2在el-dialog打开的时候使该el-dialog中的某个输入框获得焦点方法总结
前端·javascript·vue.js
家里有只小肥猫14 分钟前
el-tree 父节点隐藏
前端·javascript·vue.js
fkalis15 分钟前
【海外SRC漏洞挖掘】谷歌语法发现XSS+Waf Bypass
前端·xss
陈随易1 小时前
农村程序员-关于小孩教育的思考
前端·后端·程序员
云深时现月1 小时前
jenkins使用cli发行uni-app到h5
前端·uni-app·jenkins
昨天今天明天好多天1 小时前
【Node.js]
前端·node.js
亿牛云爬虫专家2 小时前
Puppeteer教程:使用CSS选择器点击和爬取动态数据
javascript·css·爬虫·爬虫代理·puppeteer·代理ip
2401_857610032 小时前
深入探索React合成事件(SyntheticEvent):跨浏览器的事件处理利器
前端·javascript·react.js