HTTP module

HTTP module

Axiosarrow-up-right๋Š” ์ˆ˜์‹ญ ๊ฐœ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ’๋ถ€ํ•œ ๊ธฐ๋Šฅ์˜ HTTP ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Nest๋Š” ์ด ํŒจํ‚ค์ง€๋ฅผ ๊ฐ์‹ธ์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋œ HttpModule๋กœ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. HttpModule์€ ๋‹จ์ˆœํžˆ HTTP ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Axios ๊ธฐ๋ฐ˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋…ธ์ถœํ•˜๋Š” HttpService๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ๋ฆฌํ„ด ์œ ํ˜•์„ Observables๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

HttpService๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” HttpModule์„ ๊ฐ€์ ธ์™€์•ผํ•ฉ๋‹ˆ๋‹ค.

@Module({
  imports: [HttpModule],
  providers: [CatsService],
})
export class CatsModule {}

info ํžŒํŠธ HttpModule์€ @nestjs/common ํŒจํ‚ค์ง€์—์„œ ๊ณต๊ฐœ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ HttpService๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” @nestjs/common ํŒจํ‚ค์ง€์—์„œ ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@@filename()
@Injectable()
export class CatsService {
  constructor(private readonly httpService: HttpService) {}

  findAll(): Observable<AxiosResponse<Cat[]>> {
    return this.httpService.get('http://localhost:3000/cats');
  }
}
@@switch
@Injectable()
@Dependencies(HttpService)
export class CatsService {
  constructor(httpService) {
    this.httpService = httpService;
  }

  findAll() {
    return this.httpService.get('http://localhost:3000/cats');
  }
}

๋ชจ๋“  ๋ฉ”์†Œ๋“œ๋Š” Observable ์˜ค๋ธŒ์ ํŠธ๋กœ ๋žฉํ•‘๋œ AxiosResponse๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

Configuration

Axiosarrow-up-right๋Š” HttpService๋ฅผ ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŽ์€ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐarrow-up-right์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค. ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด HttpModule์˜ register()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์ด๋Ÿฌํ•œ ๋ชจ๋“  ์†์„ฑ์€ axios ์ƒ์„ฑ์ž๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

Async configuration

๋ชจ๋“ˆ ์˜ต์…˜์„ ๋ฏธ๋ฆฌ ์ „๋‹ฌํ•˜๋Š” ๋Œ€์‹  ๋น„๋™๊ธฐ์‹์œผ๋กœ ์ „๋‹ฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” registerAsync() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๊ฐ€๋Šฅํ•œ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ํŒฉํ† ๋ฆฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ, ์šฐ๋ฆฌ ํŒฉํ† ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•ฉ๋‹ˆ๋‹ค ( async์ผ ์ˆ˜๋„ ์žˆ๊ณ  inject์„ ํ†ตํ•ด ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค).

๋˜๋Š” ํŒฉํ† ๋ฆฌ ๋Œ€์‹  ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๊ตฌ์„ฑ์€ HttpModule๋‚ด์—์„œ HttpConfigService๋ฅผ ์ธ์Šคํ„ด์Šคํ™” ํ•˜๊ณ  ์˜ต์…˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. HttpConfigService๋Š” HttpModuleOptionsFactory ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

HttpModule ๋‚ด๋ถ€์— HttpConfigService๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ๊ฐ€์ ธ์˜จ ๊ณต๊ธ‰์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด useExisting ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HttpModule์€ ๊ฐ€์ ธ์˜จ ๋ชจ๋“ˆ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ž์ฒด์ ์œผ๋กœ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๋Š” ๋Œ€์‹  ์ด๋ฏธ ์ž‘์„ฑ๋œ ConfigService๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Last updated