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
import { NewsService } from './news.service';
import { News } from './interfaces/news.interface';
第二步:通過constructor(private newsService: NewsService) {}注入
@Controller('news')
export class NewsController {constructor(private newsService: NewsService) {}.....
}
第三步:在對應的請求裝飾器中使用
@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 中注冊
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機制都將是你不可或缺的工具。