fast_nest_temp
fast_nest_temp copied to clipboard
基于[email protected]构建快速启动项目
Fast-nest-temp
介绍
基于[email protected]快速构建 Web 应用
依赖
- @nestjs/core 7.5.1 核心包
- @nestjs/config 环境变量治理
- @nestjs/swagger 生成接口文档
- swagger-ui-express 装@nestjs/swagger 必装的包 处理接口文档样式
- joi 校验参数
- log4js 日志处理
- helmet 处理基础 web 漏洞
- compression 服务端压缩中间件
- express-rate-limit 请求次数限制
- typeorm 数据库 orm 框架
- @nestjs/typeorm nest typeorm 集成
- ejs 模版引擎
- class-validator 校验参数
- ioredis redis 客户端
- nestjs-redis nest redis 配置模块
- uuid uuid 生成器
- @nestjs-modules/mailer 邮箱发送
如何使用
- 复制根目录下
default.env文件,重命名为.env文件,修改其配置 yarn start:dev开始开发yarn start:debug开始debug模式yarn commit用于提交代码,默认遵循业内规则yarn start启动项目
约束
- 接口返回值约束
interface IHttpResponse
{
"result": null,
"message": "", // 消息提示,错误消息
"code": 0, // 业务状态码
"path": "/url", // 接口请求地址
"method": "GET", // 接口方法
"timestamp": 1 // 接口响应时间
}
- 接口
HttpExceptionFilter过滤器 - 业务状态码与
Http StatusCode约定
无论接口是否异常或错误,Http StatusCode都为200
管道
- 管道
ParsePagePipe校验分页入参 - 管道
ValidationPipe结合DTO校验入参
过滤器
HttpExceptionFilter异常过滤器
默认处理所有异常,返回Http StatusCode都为 200
拦截器
LoggingInterceptor日志拦截器
处理日志,结合log4js使用
TransformInterceptor数据转换拦截器
处理返回结果,返回结果如THttpResponse
日志处理
- 默认输出
logs/access logs/app-out logs/errors - 可修改
module/log4js下配置
守卫
AuthGuard授权守卫
对于要登录才能访问的接口,请使用该守卫进行校验
在请求头中设置 AuthToken : tokenxxx
装饰器
@CurrentUser
获取当前登录用户信息
常见问题
-
如何修改接口文档地址
设置
.env文件内相应环境变量 -
如何修改启动 banner
目前启动
banner读取的是src/assets/banner.txt,自行修改该文件即可 -
使用 log4js 作为默认日志库
const app = await NestFactory.create<NestExpressApplication>(AppModule, {
logger: new Logger(),
});
通过重写LoggerService上的相关方法,实现 Nest 日志自定义
- 邮箱配置提示报错
因邮箱没区分环境,默认使用了一份配置,所以把邮箱配置忽略上传了,可参考根目录下 default.email.env
在项目condif/env/ 下新建email.env文件
- 验证码
简单起见,登录验证码直接使用图形验证码+Redis实现 注册验证码使用邮箱服务+mysql code表实现,为了安全建议邮箱验证码也使用Redis实现
- 邮箱模版提示未找到文件
需要修改nest-cli.json配置assets属性
如:
{
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"assets": [
{
"include": "assets/email-template/**/*",
"watchAssets": true
}
]
}
}