NestJs中的控制器、路由、Get、Post方法参数装饰器

控制器

Nest的控制器层负责处理传入的请求,并返回对客户端的响应。控制器是NestJs应用程序处理请求时最重要的构建块之一。
我们可以通过Nest CLI来生成一个控制器,命令如下:

nest generate controller     或者简写为     nest g co

接下来它会提示你让你输入控制器的名字,这里小编输入coffees
在这里插入图片描述
我们可以看见Nest自动为我们创建了一个控制器和一个相应的测试文件
在这里插入图片描述
此外,它还更新了我们的AppModule,我们打开AppModule,可以看到CLI自动将这个新的CoffeesController添加到controller这个数组中
在这里插入图片描述

如果不想生成测试文件,就想简单的传递,可以在创建的时候使用命令:
nest g co --no-spec

在指定的文件夹里创建路由器

nest generate controller 一级文件名/二级文件名

上面这条命令则会将新建的路由器放在/src/一级文件名/二级文件名,如果不确定生成的路由器是否放在正确的目录中,我们可以使用命令:

nest generate controller 一级文件名/二级文件名 --dry-run

这实际上不会创建任何文件,这是测试任何命令以及查看它会做什么以及它可能在哪里放置东西的方式。

设置URL与路由器的关联性

NestJs中控制器的基本构件块是类和装饰器。控制器在应用程序中处理请求的命令,但应用程序如何知道哪个URL访问哪个控制器,我们打开刚刚新建的控制器看看
在这里插入图片描述
我们可以看见@Controller()装饰器传递了一个字符串,然后此字符串传递Nest创建路由映射所需的元数据,将传入的请求绑定到这个相应的控制器,在小编的例子中
传递的是‘’coffees‘’字符串,我们可以在URL后面加/coffees可以绑定到这个控制器
我们输入网址:http://localhost:3000/coffees
在这里插入图片描述
虽然我们设置了控制器,但它是空的,所以无法获取信息,我们应该在这个控制器中设置一个Get路由才可以

GET

我们在coffeescontroller内部使用Nest装饰器之一创建一个GET HTTP处理程序,首先在控制器内部创建一个方法,方法本身的名称无关紧要,我们可以称为“findAll()”,因为此请求将用于获取此控制器的所有结果,我们用@Get()装饰器装饰这个方法,在里面添加一个快速返回语句并回显一些文本
在这里插入图片描述

接下来我们刷新刚刚的网址就可以看见返回的语句
在这里插入图片描述
如果想要从这个特定的GET请求来访问,那我们应该在@Get()的括号中加入后缀路径,例如
在这里插入图片描述
这时候我们输入网址:http://localhost:3000/coffees/flavors 就可以看见返回的字符串
在这里插入图片描述

NestJS中的Get Post 以及通过方法参数装饰器获取传值

装饰器有类装饰器、方法装饰器、属性装饰器以及方法参数装饰器等

通过Query方法参数装饰器来获取传值

在这里插入图片描述

console.log(query) 可以显示获取的传值
我们在URL中设置传参
在这里插入图片描述
这时候我们可以刷新页面,返回终端查看是否接受了参数
在这里插入图片描述

通过Request装饰器来获取传值

在使用request装饰器的时候需要从nestjs/common中引入
在这里插入图片描述

在get装饰器的方法中引入Request方法装饰器
在这里插入图片描述
这时候我们在vs中按ctrl+s,这时候修改一线URL
在这里插入图片描述
看终端发现可以接受传值
在这里插入图片描述
如果终端崩溃了,它会报出宽口3000被占用了。这时候,我们重新按ctrl+c终止一下程序,再重新热加载以下就好了。

通过Post来匹配路由

我们先来创建一个Post路由
在这里插入图片描述

这时候如果我们直接输入网址是无法访问的
在这里插入图片描述
这是因为这不是get请求,所以无法访问,要是post请求才能访问,这里我用了postman这个工具发出post请求,并且在方法里面增加打印出post方法的语句
在这里插入图片描述
在这里插入图片描述
同时终端也出现了相同的语句
在这里插入图片描述

在Post里面通过Body装饰器获取传值

引入body装饰器
在这里插入图片描述
在postman中输入一些传值
在这里插入图片描述

点击send,发现并没有传成功,这里发现是添加传值的地方出现了错误
在这里插入图片描述

再次点击send,返回终端可以看见接受的传值
在这里插入图片描述

Param获取动态路由

当您需要接受动态数据作为请求的一部分时,具有静态路径的路由将不起作用(例如,GET/cats/1)获取具有id 的cat 1)。为了定义带参数的路由,我们可以在路由中添加路由参数标记,以捕获请求URL中该位置的动态值。@Get()下面的装饰器示例中的路由参数标记演示了此用法。可以使用@Param()装饰器访问以这种方式声明的路由参数,该装饰器应添加到函数签名中。

@Get(‘:id’)
findOne(@Param() params): string {
console.log(params.id);
return This action returns a #${params.id} cat;
}

在这里插入图片描述
这时候我们再输入网址
在这里插入图片描述
就可以再终端看见收取的传值
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值