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

相关推荐
城市的稻草人VS3 分钟前
rust【日志库】
前端·rust
问心无愧051311 分钟前
ctf show web 入门258
android·前端·笔记
xwjalyf13 分钟前
javascript数组 forEach,filter,some,every,map,find,reduce的用法与区别
开发语言·javascript·json·ecmascript
海兰14 分钟前
【小程序】 贪吃蛇(Next.js+WebSocket+SQLite + Prisma ORM)
javascript·websocket·小程序
qq_25183645715 分钟前
基于java Web 耗材购置与维修网络申报审批系统设计与实现
java·开发语言·前端
UXbot16 分钟前
企业AI开发工具:界面自动生成与前端代码交付能力详解
前端·人工智能·交互·web app·ui设计
专业技术员!!!!17 分钟前
陪玩系统前端核心功能详解|线上线下陪玩平台开发方案
前端·陪玩系统·电竞陪玩
英俊潇洒美少年18 分钟前
前端主流状态管理全家桶:Vuex/Pinia/Redux/Zustand/MobX 从入门到原理、实战、面试全解
前端·面试·职场和发展
JiaWen技术圈26 分钟前
next.js 开发中的水合(Hydration)问题
javascript
Maddie_Mo27 分钟前
Pi Agent Web 使用教程:把本地 Pi Coding Agent 搬进浏览器
android·java·前端·人工智能·ai