主题
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> |
