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

相关推荐
过期的H2O29 分钟前
【H2O2|全栈】关于CSS(4)CSS基础(四)
前端·css
纳尼亚awsl23 分钟前
无限滚动组件封装(vue+vant)
前端·javascript·vue.js
八了个戒28 分钟前
【TypeScript入坑】TypeScript 的复杂类型「Interface 接口、class类、Enum枚举、Generics泛型、类型断言」
开发语言·前端·javascript·面试·typescript
西瓜本瓜@30 分钟前
React + React Image支持图像的各种转换,如圆形、模糊等效果吗?
前端·react.js·前端框架
黄毛火烧雪下31 分钟前
React 的 useEffect 钩子,执行一些异步操作来加载基本信息
前端·chrome·react.js
蓝莓味柯基36 分钟前
React——点击事件函数调用问题
前端·javascript·react.js
资深前端之路37 分钟前
react jsx
前端·react.js·前端框架
cc蒲公英1 小时前
vue2中使用vue-office库预览pdf /docx/excel文件
前端·vue.js
一嘴一个橘子1 小时前
js 将二进制文件流,下载为excel文件
javascript
Sam90291 小时前
【Webpack--013】SourceMap源码映射设置
前端·webpack·node.js