简单学习Nest 6 第四篇

第四篇 控制器与服务 controller在nest应用中扮演的是路由分配的功能,并且通过调用service来实现对数据库的增删改查功能。而服务是通过依赖注入的方式注入的控制器的属性中。 项目目录 src │ app.module.ts │ main.ts │ ├─auth │ auth.controller.ts │ auth.module.ts │ auth.service.ts │ ├─dbs │ dbs.module.ts │ dbs.service.ts │ └─user user.controller.ts user.module.ts user.service.ts 分析项目的目录我们知道了该项目中有User与Auth两个业务模块,一个数据库模块Dbs,和一个根模块App。 我们将在auth.service中实现登录认证的功能,然后在依赖到auth.controller模块中,这样我们就可以实现用户登录的功能。 代码解析 // src/auth/auth.controller.ts import { AuthService } from './auth.service'; import { Controller, Post, Body } from '@nestjs/common'; interface LoginDto { username: string; password: string; } @Controller('auth') // 这里的 auth 表示的路由 /atuh export class AuthController { @Inject() private authService: AuthService; // 将AuthService注入到authService,属性中 // 其实不用太在意注入到底是什么,这里你可以理解为AuthController留了个口叫authService,然后nest // 在内部自动将new AuthService()然后填到authService里 @Post('login') // Post /atuh/login 可以测试api login (@Body() dto: LoginDto) { return this.authService.login(dto.username, dto.password); } } import { Injectable, NotFoundException } from '@nestjs/common'; import { DbsService } from 'src/dbs/dbs.service'; @Injectable() export class AuthService { // @Inject() private dbs: DbsService; constructor(private dbs: DbsService) { } // 两种注入方式,效果一样 login (username: string, password: string) { const user = this.dbs.findOneByLogin(username, password); if (user.length === 0) { throw new NotFoundException('账号或密码错误'); } return user; } } 测试 密码错误 密码正确 看着感觉很麻烦吧,没办法企业级开发就是这样,因为只有这样才能将业务与数据分离,为了以后更好的维护扩展,今天就到这里吧,明天为了让代码变得更加有维护性和拓展性,明天开始学习一个神奇的东西Guard,并且对自己写的Guard用修饰器进行封装。 该项目的所有代码我已经发布到Git上了,地址:https://github.com/holleworldabc/nest-helloworld 最后关注、点赞、收藏,每天都会更新新的文章。 ByBy咱们明天见。 咱们明天见。 本站作品的版权皆为作品作者所有。 本站文字和内容为本站编辑或翻译,部分内容属本站原创,所以转载前务必通知本站并以超链接形式注明内容来自本站,否则以免带来不必要的麻烦。 本站内容欢迎分享,但拒绝有商业目的的转载!

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):