现在,是时候将你学到的 NestJS 知识付诸实践,构建一个简单的 RESTful API 服务器了。我们将基于第四阶段的项目(博客文章 API 或任务管理 API),使用 NestJS 的方式重新实现它。
选择以下一个项目:
项目选择 1:NestJS 博客文章 API
使用 NestJS 实现文章的增删改查接口。
项目选择 2:NestJS 任务管理 API
使用 NestJS 实现任务的增删改查接口。
项目要求:
- 使用 Nest CLI 创建新的 NestJS 项目。
- 为你的资源(文章或任务)创建一个独立的 NestJS 模块(例如
posts
或tasks
)。 - 在模块中创建控制器 (
PostsController
/TasksController
) 和服务 (PostsService
/TasksService
)。 - 使用内存数组在 Service 中模拟数据存储。
- 按照 RESTful 风格设计 API 端点和使用 HTTP 方法。控制器前缀设置为
/api/posts
或/api/tasks
。 - 为资源的创建和更新操作定义 DTOs(使用类)。
- 在控制器和服务的代码中充分使用 TypeScript 的类型注解,包括方法参数、返回值和变量。
- 在
findOne
,update
,remove
等需要通过 ID 查找资源的方法中,使用ParseIntPipe
验证 ID 参数是否为数字。 - 实现基本的错误处理:如果找不到资源,在 Service 或 Controller 中抛出
NotFoundException
;如果请求格式错误,可以依赖 NestJS 内置的验证(如果使用了 class-validator)或手动抛出BadRequestException
。 - (可选)在
main.ts
中全局应用一个 Exception Filter 来统一处理错误响应。 - (可选)添加
morgan
中间件记录请求日志。 - (可选)添加
cors
中间件处理跨域。 - 运行应用 (
npm run start:dev
或yarn start:dev
)。 - 使用工具(如 Postman, Insomnia)测试你的 API 接口。
实施步骤建议:
- 使用 Nest CLI 创建新的项目。
- 根据选择的项目,使用 CLI 生成相应的模块、控制器和服务。
- 定义资源的 TypeScript 接口和 DTOs 类。
- 在 Service 中实现使用内存数组进行 CRUD 操作的逻辑。
- 在 Controller 中定义路由和处理方法,调用 Service 的方法,并使用参数装饰器和 DTOs。
- 在需要的地方应用
ParseIntPipe
。 - 根据需要添加错误处理 Filter、日志和 CORS 中间件。
- 编写代码并使用
npm run start:dev
边写边测试。 - 通过 Postman 等工具全面测试你的 API。
完成这个项目,你将能够熟练运用 NestJS 的核心概念来构建结构清晰、类型安全、易于扩展的后端应用,为你迈向更复杂的全栈项目奠定坚实基础。
恭喜你!通过这六个阶段的学习,你已经从零开始掌握了前端(HTML, CSS, JavaScript, TypeScript)和后端(Node.js, Express, NestJS)的基础知识和常用框架。你现在已经具备了构建一个简单全栈 Web 应用所需的核心技能。
在接下来的学习中,我们将进入数据库、前端框架、前后端集成等更高级的主题,真正将前端和后端连接起来,构建功能完整的全栈应用。敬请期待!