一文入门【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

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

相关推荐

  1. 入门 HTTP 协议

    2024-07-12 06:22:04       41 阅读
  2. 入门机器学习

    2024-07-12 06:22:04       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 06:22:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 06:22:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 06:22:04       58 阅读
  4. Python语言-面向对象

    2024-07-12 06:22:04       69 阅读

热门阅读

  1. Spring AOP 使用方式

    2024-07-12 06:22:04       28 阅读
  2. filex容错模块(掉电安全)

    2024-07-12 06:22:04       26 阅读
  3. HashMap源码解析

    2024-07-12 06:22:04       29 阅读
  4. 开发一个HTTP模块

    2024-07-12 06:22:04       22 阅读
  5. vscode gitee问题

    2024-07-12 06:22:04       25 阅读
  6. DBA 数据库管理 . 内连接.外链接

    2024-07-12 06:22:04       22 阅读
  7. CentOS搭建FTP服务器教程

    2024-07-12 06:22:04       26 阅读
  8. 自动优化:SQL Server数据库自动收缩配置指南

    2024-07-12 06:22:04       26 阅读
  9. 数据结构第20节 快速排序以及优化

    2024-07-12 06:22:04       27 阅读
  10. 力扣 1两数之和

    2024-07-12 06:22:04       26 阅读