Nest学习系列
✈️一文入门【NestJS】
✈️一文入门【NestJs】Controllers 控制器
🚩 前言
在NestJS的世界里,理解"Providers"是构建健壮、可维护的后端服务的关键。NestJS,作为Node.js的一个现代框架,采用了Angular的一些核心概念,如依赖注入(Dependency Injection,DI),并将其应用于服务器端开发。本文将深入探讨NestJS中的Providers机制,解析其工作原理,以及如何利用它们来优化你的应用程序。
🚩什么是 Providers
在NestJS中,Provider是任何可以被DI容器管理和注入的对象。它可以是一个类、一个值、一个工厂函数或是抽象接口。Providers的主要作用是提供服务、值或工厂,这些可以被其他模块或组件所共享和复用。
在上片文章中了解到了Nest的Controller,这篇文章介绍到另外一个重要的知识点providers;provider可以理解成为Controller提供服务的部分,也可以称为service
🚩如何创建一个 service
nest g service news
这是一个简单的service,目前具有两个功能一个是返回所有的新闻列表,一个是创建一条数据
🚩service如何为controller提供服务
依赖注入
第一步:在controller 种引入对应 service,以及对应的接口类型
news.controller.ts
javascript
import { NewsService } from './news.service';
import { News } from './interfaces/news.interface';
第二步:通过constructor(private newsService: NewsService) {}注入
javascript
@Controller('news')
export class NewsController {
constructor(private newsService: NewsService) {}
.....
}
第三步:在对应的请求装饰器中使用
javascript
@Controller('news')
export class NewsController {
constructor(private newsService: NewsService) {}
@Get('/page')
async getNewsPageList(@Query() query: string): Promise<News[]> {
console.log(query);
return this.newsService.getNewsPageList();
}
@Post('/create')
async createNews(@Body() createNewsDto: CreateNewsDto) {
console.log(createNewsDto,'添加参数');
return this.newsService.createNews(createNewsDto);
}
}
第四步:在app.module 中注册
javascript
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { NewsController } from './news/news.controller';
import { NewsService } from './news/news.service';
@Module({
imports: [],
controllers: [AppController, NewsController],
providers: [AppService,NewsService],
})
export class AppModule {}
结语
掌握NestJS中的Providers,意味着你能够更好地构建模块化、可扩展的后端服务。通过合理的使用Providers,你可以轻松地管理依赖关系,提高代码的可读性和可维护性。无论是构建复杂的微服务架构,还是简单的API服务,NestJS的DI机制都将是你不可或缺的工具。