主题
NestJS
NestJS 是基于 Node.js 的框架,使用 TypeScript 的服务端应用程序的框架。
环境准备
安装 Nestjs 脚手架
shell
npm i -g @nestjs/cli
创建一个新项目
shell
nest new admin-by-nestjs
启动本地服务
shell
npm run start
终端启动 HTTP 服务,会监听定义在 src/main.ts
文件中定义的端口号。
应用程序运行后, 打开浏览器并访问本地 3000 端口,可以看到 Hello world!
信息。
控制器
控制器负责处理传入的请求和向客户端返回响应。
通常,每个控制器有多个路由,不同的路由可以执行不同的操作。
创建一个控制器,需要使用到类和装饰器。
- 装饰器将类与所需的元数据相关联,并使 Nest 能够创建路由映射(将请求绑定到相应的控制器)。
- 快速创建控制器,可在终端执行
nest g controller xxx
,了解更多常见的创建类命令。
路由
xxx.controller.ts
文件,使用 @Controller()
装饰器定义一个控制器。
一个处理程序的路由路径是通过:连接为控制器 (Controller) 声明的(可选)前缀 + 请求装饰器中指定的任何路径来确定的。
- 控制器声明的前缀:
@Controller(path)
:路径前缀,可选。是对一组相关的路由进行分组,并减少重复代码,如@Controller('user')
;
- 请求装饰器中指定的任何路径
@Get(path)
:,如@Get('info')
,组合起来的路由路径就是/user/info
。
Request
Nest 提供的装饰器及其代表的底层平台特定对象的对照列表
装饰器 | Request 对象 |
---|---|
@Request(),@Req() | req |
@Response(),@Res() | 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] |
@Ip() | req.ip |
@HostParam() | req.hosts |
@Res()
只是@Response()
的别名
资源
路由通配符
状态码
Headers
重定向
路由参数
子域路由
作用域
异步性
请求负载
处理错误
完整示例
最后一步
类库特有方式
提供者
模块
中间件
异常过滤器
管道
守卫
拦截器
自定义装饰器
常用命令
项目脚本
功能 | 命令 |
---|---|
启动项目 | npm run start |
启动项目(监听文件变化) | npm run start:dev |
检查 JavaScript | npm run lint |
检查样式 | npm run format |
创建类命令
功能 | 命令 |
---|---|
创建模块 | nest g module <module-name> |
创建控制器 | nest g controller <controller-name> |
创建服务 | nest g service <service-name> |
创建守卫 | nest g guard <guard-name> |
创建拦截器 | nest g interceptor <interceptor-name> |