NestJS REST API Boilerplate 使用教程
1. 项目介绍
1.1 项目概述
nest-rest-typeorm-boilerplate
是一个基于 NestJS、TypeORM 和 TypeScript 的 REST API 样板项目。该项目旨在快速原型化后端应用程序,提供了包括身份验证、授权、日志记录、CRUD 功能和数据库持久化在内的开箱即用功能。
1.2 主要特性
- 身份验证与授权:内置 JWT 认证和角色权限管理。
- 日志记录:使用 Winston 模块进行详细的日志记录。
- CRUD 功能:提供基本的 CRUD 操作模板。
- 数据库持久化:支持 MySQL/MariaDB,并可通过配置切换到其他数据库类型。
- 测试:包含单元测试和端到端测试的示例。
2. 项目快速启动
2.1 环境准备
- Node.js (16+)
- MySQL/MariaDB (本地或 Docker)
2.2 安装与配置
-
克隆项目:
git clone https://github.com/msanvarov/nest-rest-typeorm-boilerplate.git cd nest-rest-typeorm-boilerplate
-
安装依赖:
npm install
-
配置环境变量: 复制
.env.example
文件并重命名为.env
,然后根据实际情况修改环境变量。cp .env.example .env
-
启动应用:
npm run start
应用将在
http://localhost:3333
上运行。
2.3 Docker 部署
-
启动 Docker 容器:
docker-compose up -d
应用将在
http://localhost:80
上运行。
3. 应用案例和最佳实践
3.1 身份验证与授权
项目内置了 JWT 认证和角色权限管理。以下是一个简单的用户注册和登录示例:
// 注册新用户
await this.authService.register({
email: 'user@example.com',
password: 'password123',
firstName: 'John',
lastName: 'Doe',
});
// 用户登录
const token = await this.authService.login({
email: 'user@example.com',
password: 'password123',
});
3.2 日志记录
项目使用 Winston 进行日志记录,可以在 app.module.ts
中配置日志级别和输出格式。
import { WinstonModule } from 'nest-winston';
import * as winston from 'winston';
@Module({
imports: [
WinstonModule.forRoot({
transports: [
new winston.transports.Console({
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple(),
),
}),
],
}),
],
})
export class AppModule {}
4. 典型生态项目
4.1 NestJS
NestJS 是一个用于构建高效、可扩展的服务器端应用程序的框架,深受 Angular 的启发。它使用 TypeScript 编写,并结合了 OOP、FP 和 FRP 的元素。
4.2 TypeORM
TypeORM 是一个对象关系映射器(ORM),允许开发者使用 TypeScript 或 JavaScript 编写数据库操作。它支持多种数据库类型,如 MySQL、PostgreSQL、SQLite 等。
4.3 Winston
Winston 是一个通用的日志库,支持多种传输方式(如控制台、文件、HTTP 等),并提供了丰富的格式化和过滤功能。
4.4 Docker
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包到一个可移植的容器中,以便在任何环境中运行。
通过以上模块的介绍和使用指南,开发者可以快速上手并利用 nest-rest-typeorm-boilerplate
项目构建高效的后端服务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考