关于Nest控制器

1 ) 控制器的作用

  • Nest中的控制器层负责处理传入的请求, 并返回对客户端的响应
  • 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求
  • 通常,每个控制器有多个路由,不同的路由可以执行不同的操作

2 ) 控制器的创建

  • 基于cli对控制器进行创建: $ nest g controller about
  • 一个控制器就对应一个class类, 并且通常会使用@Controller的装饰器来装饰

示例:

import { Controller } from '@nestjs/common';@Controller('about')
export class AboutController {}
  • 当执行创建命令后,不仅生成了一个src/about目录,目录下有2个控制器文件
  • 分别是:about.controller.spec.ts 和 about.controller.ts
  • 还更新了主模块:/src/app.module.ts, 也就是自动注入了该控制器模块
  • 我们继续写业务逻辑

示例:

import { Controller, Get } from '@nestjs/common';@Controller('about')
export class AboutController {// about@Get()index():string {// 注意上面的index可以随意命名,不一定要用indexreturn '我是about页面';}// 注意在装饰器中,不要使用分号;// /about/more@Get("more")getMore():string {// 注意上面的index可以随意命名,不一定要用indexreturn '我是about的更多页面';}
}
  • 当请求处理程序返回JavaScript对象或数组时,它将自动序列化为JSON
  • 但是,当它返回一个字符串时,Nest 将只发送一个字符串而不是序列化它
  • 这使响应处理变得简单:只需要返回值,Nest 负责其余部分

3 )其他模块的创建

  • $ nest g --help 可查看哪些模块可以创建

关于Nest路由

1 ) 概述

  • 路由就是接口地址的另一种称谓,而且路由和控制器密不可分
  • 控制器用于响应路由请求,在写法上,我们通常会基于装饰器模式编码

2 )装饰器的作用

  • 扩展类,方法,属性,以及参数的功能
  • 默认提供:HTTP 请求方法的装饰器 @Put() 、@Delete()、@Patch()、 @Options()、 @Head()和 @All()
  • 很好的对RESTful进行了支持,同样,对请求参数,也提供了一些内置装饰器
@Request()                      req
@Response()                     res
@Next()                         next
@Session()                      req.session
@Param(key?: string)            req.params / req.params[key]
@Body(key?: string)             req.body / req.body[key]
@Query(key?: string)            req.query / req.query[key]
@Headers(name?: string)         req.headers / req.headers[name]

3 ) 装饰器示例

import  { Controller, Get, Post, Query, Request, Body }  from '@nest/common';@controller('cart')
export class CartController {@Get()index() {return 'Shopping Cart';}@Get('add')addCart(@Query() query) {console.log(query);return 'Add To Cart';}@Get('edit')editCart(@Request() req) {console.log(req.query);return req.query;}@Post('create')create(@Body body) {console.log(body);return 'create'}
}

3 ) 动态路由的配置

import  { Controller, Get, Post, Param, Query }  from '@nest/common';@controller('order')
export class OrderController {@Post('add')addOrder(@Query('id') id) {// order/add?id=123console.log('id: ', id)return id;}@Get(':id')index(@Param() param) {// order/123console.log(param);return '当前页面参数'}
}
  • 注意,如果路由形式大体相同,需要注意查找顺序,比如
  • order/123 和 order/add 这两种,需要将add放入上面,避免匹配不到

4 ) 动态路由的模糊匹配

import  { Controller, Get, Post, Param, Query }  from '@nest/common';@controller('order')
export class OrderController {@Get('xx*yy')vagueMatch() {console.log('vague match');return '模糊匹配';}@Post('add')addOrder(@Query('id') id) {// order/add?id=123console.log('id: ', id)return id;}@Get(':id')index(@Param() param) {// order/123console.log(param);return '当前页面参数'}
}
  • 同样需要注意顺序问题

Nestjs中控制器和路由的配置使用相关推荐

  1. 中兴路由器中浮动静态路由的配置

    一.实验目的 1.掌握中兴1800路由器的工作原理. 2.熟练掌握浮动静态路由的配置过程. 二.实验内容 1.绘制拓扑图,根据拓扑图进行试验: 2.配置路由器,并最终验证网络的连通性. 三.实验过程 ...

  2. 中兴路由器中RIP路由的配置

    一.实验目的 1.掌握路由器中RIP动态路由的配置方法和结果验证: 二.实验内容 1.绘制拓扑图,根据拓扑图进行试验: 2.配置路由器,并最终验证网络的连通性. 三.实验过程 1.实验任务说明 1.配 ...

  3. dubbo-go 中如何实现路由策略功能

    可在控制面对服务的路由进行精细控制,是一个成熟 RPC 系统必备的能力之一.作为一个逐步走向成熟的 RPC 系统,Apache/dubbo-go(以下简称 dubbo-go )的最新版本 v1.4 中 ...

  4. vuejs中路由的传参以及路由props配置

    虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如 ...

  5. Cisco Packet Tracer思科模拟器中EIGRP动态路由配置

    增强型内部网关路由协议 (EIGRP) 是 Cisco Systems 开发的高级距离矢量路由协议. 顾名思义,EIGRP 是另一种思科路由协议 IGRP(内部网关路由协议)的增强版. IGRP 是较 ...

  6. eNSP中浮动路由的配置

    思路先配置直连路由,然后再配置静态路由,最后配置浮动路由 一.配置直连路由 1)新建拓扑图,添加需要用到的设备,并连接网线,启动设备. 2)对PC机进行配置: PC1 ip 192.168.1.1 子 ...

  7. 在Packet Tracer中路由器静态路由配置

    实验目标: <1>掌握静态路由的配置方法和技巧 <2>掌握通过静态路由方式实现网络的连通性 <3>熟悉广域网线缆的链接方式 技术原理: <1>路由器属于 ...

  8. 中兴路由器中静态路由的配置

    一.实验目的 1.掌握中兴1800路由器的工作原理. 2.熟练掌握静态路由的配置过程. 二.实验内容 1.绘制拓扑图,根据拓扑图进行试验: 2.配置路由器,并最终验证网络的连通性. 三.实验过程 1. ...

  9. Nestjs中的守卫

    NestJs中的守卫(guards)概念 文档:https://docs.nestjs.com/guards 守卫是一个使用 @Injectable()装饰器装饰的类,并且实现了CanActivate ...

最新文章

  1. linux自学笔记——RAID级别特性以及软RAID的实现
  2. arraylist 初始化_第一章 C#数据结构--数组和ArrayList
  3. Py之imgaug:Python库之imgaug简介、安装、使用方法之详细攻略
  4. linux无线网卡消失,linux下wpa/wpa2的无线网卡设置 [暂时还没有证实是否能用]
  5. CF981E Addition on Segments 线段树分治 + bitset优化
  6. Java打war包or打jar包
  7. 从零搭建nginx服务器
  8. Gmail地址图片注册...
  9. Pytorch---之scatter_ 理解轴的含义
  10. 中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
  11. 快速突破面试算法之排序篇
  12. Windows查看快捷键占用情况
  13. GitHub 上有哪些一般人也可以用的项目?
  14. 嵌入式Linux系统优化的那些事儿
  15. 动图GIF图片怎么制作?教你一键搞定
  16. Windows徽标键的使用
  17. Bing Wallpaper - 英语学习利器
  18. 小组件打不开-完美解决
  19. Raspberry Pi 3B学习笔记
  20. java 文本转语音开发

热门文章

  1. 网页闯关游戏(riddle webgame)--游戏玩法和整体介绍
  2. nginx长连接与短连接性能对比
  3. b和kb的换算_kb与字节之间的转换 字节,b,KB,GB怎么换算的
  4. 实现最小生成树Kruskal算法(附完整代码)
  5. 她说:是的,嫁人当嫁程序员!
  6. ARM学习-ARM指令集详解
  7. #21天学习挑战赛#Python入门之mac安装第三方模块——详细教程
  8. seaborn放大图片
  9. python二进制转十进制不用内置函数_在python中将二进制转换为十进制(没有内置的二进制函数)...
  10. Vue安装并创建项目