基于 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!
如有问题,请通过以下方式联系:
注意:这是一个基础开发架构,适合用作项目起点。在生产环境中使用前,请确保: