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

相关推荐
xjt_090120 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农20 小时前
Vue 2.3
前端·javascript·vue.js
夜郎king21 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
辰风沐阳21 小时前
JavaScript 的宏任务和微任务
javascript
夏幻灵1 天前
HTML5里最常用的十大标签
前端·html·html5
冰暮流星1 天前
javascript之二重循环练习
开发语言·javascript·数据库
Mr Xu_1 天前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝1 天前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions1 天前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发1 天前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法