Nestjs中控制器和路由的配置使用
关于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.掌握中兴1800路由器的工作原理. 2.熟练掌握浮动静态路由的配置过程. 二.实验内容 1.绘制拓扑图,根据拓扑图进行试验: 2.配置路由器,并最终验证网络的连通性. 三.实验过程 ...
- 中兴路由器中RIP路由的配置
一.实验目的 1.掌握路由器中RIP动态路由的配置方法和结果验证: 二.实验内容 1.绘制拓扑图,根据拓扑图进行试验: 2.配置路由器,并最终验证网络的连通性. 三.实验过程 1.实验任务说明 1.配 ...
- dubbo-go 中如何实现路由策略功能
可在控制面对服务的路由进行精细控制,是一个成熟 RPC 系统必备的能力之一.作为一个逐步走向成熟的 RPC 系统,Apache/dubbo-go(以下简称 dubbo-go )的最新版本 v1.4 中 ...
- vuejs中路由的传参以及路由props配置
虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如 ...
- Cisco Packet Tracer思科模拟器中EIGRP动态路由配置
增强型内部网关路由协议 (EIGRP) 是 Cisco Systems 开发的高级距离矢量路由协议. 顾名思义,EIGRP 是另一种思科路由协议 IGRP(内部网关路由协议)的增强版. IGRP 是较 ...
- eNSP中浮动路由的配置
思路先配置直连路由,然后再配置静态路由,最后配置浮动路由 一.配置直连路由 1)新建拓扑图,添加需要用到的设备,并连接网线,启动设备. 2)对PC机进行配置: PC1 ip 192.168.1.1 子 ...
- 在Packet Tracer中路由器静态路由配置
实验目标: <1>掌握静态路由的配置方法和技巧 <2>掌握通过静态路由方式实现网络的连通性 <3>熟悉广域网线缆的链接方式 技术原理: <1>路由器属于 ...
- 中兴路由器中静态路由的配置
一.实验目的 1.掌握中兴1800路由器的工作原理. 2.熟练掌握静态路由的配置过程. 二.实验内容 1.绘制拓扑图,根据拓扑图进行试验: 2.配置路由器,并最终验证网络的连通性. 三.实验过程 1. ...
- Nestjs中的守卫
NestJs中的守卫(guards)概念 文档:https://docs.nestjs.com/guards 守卫是一个使用 @Injectable()装饰器装饰的类,并且实现了CanActivate ...
最新文章
- linux自学笔记——RAID级别特性以及软RAID的实现
- arraylist 初始化_第一章 C#数据结构--数组和ArrayList
- Py之imgaug:Python库之imgaug简介、安装、使用方法之详细攻略
- linux无线网卡消失,linux下wpa/wpa2的无线网卡设置 [暂时还没有证实是否能用]
- CF981E Addition on Segments 线段树分治 + bitset优化
- Java打war包or打jar包
- 从零搭建nginx服务器
- Gmail地址图片注册...
- Pytorch---之scatter_ 理解轴的含义
- 中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)
- 快速突破面试算法之排序篇
- Windows查看快捷键占用情况
- GitHub 上有哪些一般人也可以用的项目?
- 嵌入式Linux系统优化的那些事儿
- 动图GIF图片怎么制作?教你一键搞定
- Windows徽标键的使用
- Bing Wallpaper - 英语学习利器
- 小组件打不开-完美解决
- Raspberry Pi 3B学习笔记
- java 文本转语音开发
热门文章
- 网页闯关游戏(riddle webgame)--游戏玩法和整体介绍
- nginx长连接与短连接性能对比
- b和kb的换算_kb与字节之间的转换 字节,b,KB,GB怎么换算的
- 实现最小生成树Kruskal算法(附完整代码)
- 她说:是的,嫁人当嫁程序员!
- ARM学习-ARM指令集详解
- #21天学习挑战赛#Python入门之mac安装第三方模块——详细教程
- seaborn放大图片
- python二进制转十进制不用内置函数_在python中将二进制转换为十进制(没有内置的二进制函数)...
- Vue安装并创建项目