一文入门【NestJs】Providers

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机制都将是你不可或缺的工具。

相关推荐
微小冷4 分钟前
Python图论库NetworkX初步
开发语言·python·图论·graph·networkx·digraph
Data_Journal1 小时前
如何使用 Python 抓取 Google Flights:分步指南
大数据·开发语言·数据库·python·scrapy
一直C1 小时前
【数据结构】哈希表+算法复杂度与经典排序查找(C语言)
java·linux·开发语言·数据结构·算法·ubuntu·散列表
Kismet_nvi1 小时前
Python 基础核心知识点总结
开发语言·windows·python
爱学习的小邓同学1 小时前
Golang语言入门
开发语言·后端·golang
悟空瞎说1 小时前
# Dispatch(GCD)苹果官方文档 白话文讲解(Objective‑C 版本文档)
javascript
七牛开发者2 小时前
Coding Agent 如何跑稳长任务?从上下文管理到运行时状态
前端·javascript·后端
七牛开发者2 小时前
拆解 DeepSeek Harness:Profile 与 Bundle 如何装配运行时
前端·javascript·后端
编码浪子2 小时前
Rust 智能指针深度实战:Box/Rc/Arc/RefCell 选型决策与内存管理避坑
开发语言·后端·rust
yichudu2 小时前
Python 装饰器 decorator
开发语言·python