Note
nestjs
nestjs简单笔记
发布于 更新于
命令
| 命令 | 作用 | 使用场景 |
|---|---|---|
npm start |
编译并启动 NestJS,修改代码后不会自动重启 | 普通启动 |
npm run start:dev |
监听源代码变化,修改后自动重新编译、重启 | 日常开发,最常用 |
npm run start:debug |
在 start:dev 基础上开启 Node.js 调试端口 |
使用 VS Code 等工具断点调试 |
npm run start:prod |
直接运行已经编译好的 dist/main.js |
生产环境 |
npm run format |
使用 Prettier 自动统一代码格式,只格式化代码不启动项目服务器 | 代码格式化 |
npm run lint |
检查代码规范和潜在错误,并自动修复部分问题,不启动项目服务器 | 检查代码语法规范 |
npm run test |
使用 Jest 执行单元测试。默认查找类似app.controller.spec.ts,user.service.spec.ts的文件,只运行单元测试不启动项目服务器: |
进行单元测试 |
状态码
响应的默认状态码通常为 200,但 POST 请求除外,其默认状态码为 201。可以使用 @HttpCode(...) 装饰器来修改(从@nestjs/common 包中导入 )
@Post()
@HttpCode(204)
create() {
return 'This action adds a new cat';
}
规范
- 文件名、目录名:verification-code,使用 kebab-case。
- TypeScript 类名:VerificationCode,使用 PascalCase。
- URL:verification-codes,使用小写复数。
- 数据库表:user_verification_code,保持 snake_case。
一个模块的执行流程
进入模块的module.ts文件(模块的主文件) => 控制层controller处理请求,调用业务层 => 业务层service处理业务逻辑,调用持久层 => 持久层与数据库交互 => 控制层controller响应数据给客户端
DTO和interface的区别
DTO是接口之间传输的数据模型,DTO是实体(class),编译后依然存在。interface属于typescript语法,用于编写代码时检查类型、IDE 自动补全、编译阶段发现错误等等,只存在于 TypeScript 编译阶段,编译完成后会消失。项目里面可以不写interface,DTO可以取代它的数据类型限制、检查作用。所以存在DTO和interface的数据模型相同的情况下,完全可以不需要写interface,直接用DTO就行了
浏览器地址栏只能发送 GET 请求,不能发送带 JSON body 的 POST 请求。可以在浏览器控制台或者powershell中调试post请求
- 控制台
fetch("http://localhost:3000/cats/createCat", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "咪咪",
age: 2,
breed: "英短",
}),
})
.then((response) => response.text())
.then((result) => console.log(result));
- powershell
Invoke-RestMethod `
-Uri "http://localhost:3000/cats/createCat" `
-Method Post `
-ContentType "application/json" `
-Body '{"name":"咪咪","age":2,"breed":"英短"}'
或者使用真正的curl
curl.exe -X POST "http://localhost:3000/cats/createCat" `
-H "Content-Type: application/json" `
-d "{\"name\":\"咪咪\",\"age\":2,\"breed\":\"英短\"}"