基于 NestJS、TypeScript 和 SQLite 构建的基础开发架构,包含用户认证、JWT Token 验证、RESTful API 等功能。
src/ ├── app.controller.ts # 应用主控制器 ├── app.module.ts # 应用主模块 ├── app.service.ts # 应用主服务 ├── main.ts # 应用入口文件 ├── auth/ # 认证模块 │ ├── auth.controller.ts # 认证控制器 │ ├── auth.module.ts # 认证模块 │ ├── auth.service.ts # 认证服务 │ ├── dto/ # 数据传输对象 │ │ ├── login.dto.ts │ │ └── register.dto.ts │ ├── guards/ # 守卫 │ │ ├── jwt-auth.guard.ts │ │ └── local-auth.guard.ts │ └── strategies/ # 策略 │ ├── jwt.strategy.ts │ └── local.strategy.ts ├── users/ # 用户模块 │ ├── users.controller.ts # 用户控制器 │ ├── users.module.ts # 用户模块 │ ├── users.service.ts # 用户服务 │ ├── dto/ # 数据传输对象 │ │ ├── create-user.dto.ts │ │ └── update-user.dto.ts │ └── entities/ # 实体 │ └── user.entity.ts └── demo/ # 演示模块 ├── demo.controller.ts # 演示控制器 └── demo.module.ts # 演示模块
npm install
# 开发模式(热重载)
npm run start:dev
# 生产模式
npm run start:prod
# 调试模式
npm run start:debug
应用程序将在 http://localhost:3000 启动。
npm run build
GET /health
响应示例:
{
"status": "ok",
"timestamp": "2024-01-01T00:00:00.000Z",
"message": "NestJS SQLite 基础架构运行正常"
}
POST /auth/register Content-Type: application/json { "username": "testuser", "email": "test@example.com", "password": "123456", "firstName": "张", "lastName": "三" }
POST /auth/login Content-Type: application/json { "username": "testuser", "password": "123456" }
响应示例:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "testuser",
"email": "test@example.com",
"firstName": "张",
"lastName": "三"
}
}
所有用户接口都需要在请求头中包含 JWT Token:
Authorization: Bearer <your-jwt-token>
GET /users
GET /users/profile
GET /users/:id
PATCH /users/:id Content-Type: application/json { "firstName": "李", "lastName": "四" }
DELETE /users/:id
GET /demo/public
GET /demo/protected Authorization: Bearer <your-jwt-token>
GET /demo/user-info Authorization: Bearer <your-jwt-token>
项目使用 SQLite 数据库,数据库文件会自动创建在项目根目录下的 database.sqlite。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键,自增 |
| username | VARCHAR | 用户名,唯一 |
| VARCHAR | 邮箱,唯一 | |
| password | VARCHAR | 密码(加密存储) |
| firstName | VARCHAR | 名字(可选) |
| lastName | VARCHAR | 姓氏(可选) |
| isActive | BOOLEAN | 是否激活,默认 true |
| createdAt | DATETIME | 创建时间 |
| updatedAt | DATETIME | 更新时间 |
可以创建 .env 文件来配置环境变量:
# JWT 密钥 JWT_SECRET=your-secret-key # 数据库配置 DATABASE_PATH=database.sqlite
nest generate module feature-name nest generate controller feature-name nest generate service feature-name
app.module.ts 中导入新模块entities 目录下创建实体文件app.module.ts 的 TypeORM 配置中添加实体使用 class-validator 装饰器进行数据验证:
import { IsEmail, IsNotEmpty, MinLength } from 'class-validator';
export class CreateUserDto {
@IsNotEmpty({ message: '用户名不能为空' })
username: string;
@IsEmail({}, { message: '邮箱格式不正确' })
email: string;
@MinLength(6, { message: '密码长度至少6位' })
password: string;
}
npm run build
npm run start:prod
可以创建 Dockerfile 进行容器化部署:
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY dist ./dist EXPOSE 3000 CMD ["node", "dist/main"]
ISC
欢迎提交 Issue 和 Pull Request!
如有问题,请通过以下方式联系:
注意:这是一个基础开发架构,适合用作项目起点。在生产环境中使用前,请确保: