기술나눔

하나의 기사로 [NestJs] 제공자 소개

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Nest 학습 시리즈

✈️한 글로 [NestJS] 시작하기
✈️한 기사로 [NestJs] 컨트롤러 소개

🚩 前言

NestJS의 세계에서는 '공급자'를 이해하는 것이 강력하고 유지 관리 가능한 백엔드 서비스를 구축하는 열쇠입니다. Node.js의 최신 프레임워크인 NestJS는 DI(종속성 주입)와 같은 Angular의 몇 가지 핵심 개념을 채택하고 이를 서버 측 개발에 적용합니다. 이 기사에서는 NestJS의 공급자 메커니즘을 자세히 살펴보고 작동 방식을 분석하며 이를 사용하여 애플리케이션을 최적화하는 방법을 설명합니다.

🚩什么是 Providers

NestJS에서 공급자는 DI 컨테이너에서 관리하고 주입할 수 있는 모든 개체입니다. 클래스, 값, 팩토리 함수 또는 추상 인터페이스일 수 있습니다. 공급자의 주요 역할은 다른 모듈이나 구성 요소에서 공유하고 재사용할 수 있는 서비스, 값 또는 팩토리를 제공하는 것입니다.

이전 기사에서 Nest의 컨트롤러에 대해 배웠습니다. 이 기사에서는 또 다른 중요한 지식 포인트를 소개합니다. 공급자는 서비스를 제공하는 컨트롤러의 일부로 이해될 수 있으며 서비스라고도 합니다.

🚩如何创建一个 service

네스트지 서비스 소식

이는 현재 두 가지 기능을 갖는 간단한 서비스입니다. 하나는 모든 뉴스 목록을 반환하는 것이고, 다른 하나는 데이터 조각을 생성하는 것입니다.
여기에 이미지 설명을 삽입하세요.
여기에 이미지 설명을 삽입하세요.

🚩service如何为controller提供服务

의존성 주입

첫 번째 단계: 컨트롤러에 해당 서비스와 해당 인터페이스 유형을 도입합니다.

뉴스.컨트롤러.ts

import { NewsService } from './news.service';
import { News } from './interfaces/news.interface';
  • 1
  • 2

2단계: 생성자를 통해 삽입(private newsService: NewsService) {}

@Controller('news')
export class NewsController {
	constructor(private  newsService: NewsService) {}
	.....
}
  • 1
  • 2
  • 3
  • 4
  • 5

3단계: 해당 요청 데코레이터에서 사용

@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);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4단계: 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 {}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

결론

NestJS의 마스터링 공급자는 모듈식 및 확장 가능한 백엔드 서비스를 더 잘 구축할 수 있음을 의미합니다. 공급자를 적절하게 사용하면 종속성을 쉽게 관리하고 코드 가독성과 유지 관리성을 향상시킬 수 있습니다. 복잡한 마이크로서비스 아키텍처를 구축하든 간단한 API 서비스를 구축하든 NestJS의 DI 메커니즘은 없어서는 안 될 도구가 될 것입니다.