NestJS 实现的 RealWorld 示例应用
项目地址:https://gitcode.com/lujakob/nestjs-realworld-example-app
该项目是一个遵循 RealWorld API 规范的 NestJS 示例应用,它包含了真实世界中的各种应用场景,如 CRUD 操作、身份验证和高级设计模式等。它旨在帮助开发者理解和实践后端开发,并能够与其他符合相同规范的前端应用无缝对接。
项目安装与启动
首先,通过 Git 克隆项目仓库:
git clone https://github.com/lujakob/nestjs-realworld-example-app.git
然后进入项目目录并安装依赖:
cd nestjs-realworld-example-app
npm install
接下来,根据你的数据库选择(TypeORM 或 Prisma),复制配置文件并设置 JSON Web Token 的密钥。对于 TypeORM,请执行以下操作:
cp src/config.ts.example src/config.ts
在为数据库创建表之后,你可以通过运行以下命令来启动应用程序:
npm start
访问 http://localhost:3000/api/articles
来测试 API 是否正常工作。
数据库抽象层
项目提供了两种不同的数据库抽象方案:TypeORM 和 Prisma。默认分支使用 TypeORM 配合 MySQL 数据库。若要切换到 Prisma,你需要从 prisma
分支克隆代码并按照 Prisma 文档进行配置。
TypeORM
- 创建名为
nestjsrealworld
的 MySQL 数据库。 - 复制
ormconfig.json.example
文件并设置数据库连接信息。 - 应用更改并启动应用,TypeORM 将自动创建所有实体对应的表。
Prisma
- 更改为
prisma
分支。 - 创建一个新的 MySQL 数据库
nestjsrealworld-prisma
。 - 复制
prisma/.env.example
并设置数据库连接信息。 - 运行迁移以创建数据库表和生成 Prisma 客户端。
NPM 脚本
npm start
: 启动应用npm run start:watch
: 开发模式下启动应用npm run test
: 运行 Jest 测试npm run start:prod
: 生产环境构建应用
API 规范
这个应用严格遵守 RealWorld API 规范,这意味着你可以使用任何支持该规范的前端框架与之配合,无需担心兼容性问题。
认证
应用使用 JSON Web Token (JWT) 进行身份验证。每个请求都通过 Authorization
头部传递 Token(使用 Token
方案)。JWT 中间件负责令牌的有效性和认证处理。
Swagger API 文档
为了提供详细的 API 文档,此示例应用集成了 NestJS 的 Swagger 模块。了解更多关于 NestJS Swagger 和 Swagger 的信息,请访问 NestJS Swagger 和 Swagger 官网。
总的来说,无论你是初学者还是经验丰富的开发者,这个 NestJS 实例应用都是一个绝佳的学习和实践平台。它覆盖了现代 web 开发的重要方面,包括 RESTful API 设计、数据库集成以及安全机制,绝对值得你一试!
项目地址:https://gitcode.com/lujakob/nestjs-realworld-example-app