NestJS를 사용한 자바스크립트 서버 개발 가이드

NestJS

NestJS는 JavaScript 및 TypeScript를 사용한 서버 개발을 위한 프레임워크로, 강력한 기능과 모듈화된 아키텍처를 제공합니다. 이 가이드는 NestJS를 사용하여 자바스크립트로 서버를 개발하는 방법에 대해 설명합니다.

목차

NestJS 소개

NestJS는 서버 개발을 위한 JavaScript 및 TypeScript를 사용하는 프레임워크로, Angular의 개념을 모델로 하여 만들어졌습니다. 이를 통해 개발자는 모듈, 컨트롤러, 서비스, 미들웨어 등을 사용하여 손쉽게 긴밀하게 연결된 애플리케이션을 개발할 수 있습니다.

NestJS 설치

NestJS를 사용하기 위해서는 Node.js와 npm이 설치되어 있어야 합니다. 다음 명령어를 사용하여 NestJS CLI를 전역으로 설치합니다:

` $ npm install -g @nestjs/cli \`

프로젝트 생성

NestJS 프로젝트를 생성하기 위해 다음과 같은 명령어를 사용합니다:

` $ nest new my-project \`

위 명령을 실행하면 “my-project”라는 이름의 폴더가 생성되고, 필요한 모듈과 설정 파일이 자동으로 설치됩니다.

컨트롤러 생성

NestJS에서 컨트롤러는 로직을 처리하고 요청을 처리하기 위해 사용되는 클래스입니다. 컨트롤러를 생성하기 위해 다음 명령어를 사용합니다:

` $ nest generate controller users \`

위 명령을 실행하면 “users.controller.ts”라는 파일이 생성되며, 이 파일에서 컨트롤러의 로직을 작성할 수 있습니다.

모듈 생성

NestJS에서 모듈은 컨트롤러, 서비스, 미들웨어 등을 하나로 묶어주는 역할을 합니다. 모듈을 생성하기 위해 다음 명령어를 사용합니다:

` $ nest generate module users \`

위 명령을 실행하면 “users.module.ts”라는 파일이 생성되며, 이 파일에서 모듈의 설정과 의존성을 관리할 수 있습니다.

서비스 생성

NestJS에서 서비스는 비즈니스 로직을 처리하는 클래스입니다. 서비스를 생성하기 위해 다음 명령어를 사용합니다:

` $ nest generate service users \`

위 명령을 실행하면 “users.service.ts”라는 파일이 생성되며, 이 파일에서 서비스의 로직을 작성할 수 있습니다.

Dependency Injection

NestJS는 의존성 주입(Dependency Injection)을 통해 강력한 모듈화된 아키텍처를 제공합니다. 이는 코드의 재사용성과 테스트 용이성을 높여줍니다.

Middleware 적용

NestJS에서 미들웨어는 요청 처리 전후에 실행되는 함수로, 로깅, 인증, 예외 처리 등의 공통 로직을 처리하는데 사용됩니다. 미들웨어를 적용하기 위해 다음과 같이 작성합니다:

import { LoggerMiddleware } from './common/middleware/logger.middleware';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.use(LoggerMiddleware);
  await app.listen(3000);
}
bootstrap();

Exception Handling

NestJS는 예외 처리를 위한 기능을 제공합니다. 예외 처리를 위해 다음과 같이 작성합니다:

import { HttpExceptionFilter } from './common/filters/http-exception.filter';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalFilters(new HttpExceptionFilter());
  await app.listen(3000);
}
bootstrap();

Swagger 문서화

NestJS는 Swagger를 통해 API 문서를 자동으로 생성할 수 있습니다. Swagger를 사용하기 위해서는 다음 모듈을 설치해야 합니다:

` $ npm install @nestjs/swagger swagger-ui-express \`

Swagger를 사용하기 위해 다음과 같이 작성합니다:

import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  
  const options = new DocumentBuilder()
    .setTitle('API Documentation')
    .setDescription('This is the documentation of my API')
    .setVersion('1.0')
    .build();
  
  const document = SwaggerModule.createDocument(app, options);
  SwaggerModule.setup('api', app, document);
  
  await app.listen(3000);
}
bootstrap();

테스트

NestJS는 테스트를 위한 도구와 메서드를 제공합니다. 테스트 작성을 위해서는 다음과 같은 패키지를 설치해야 합니다:

` $ npm install --save-dev @nestjs/testing jest \`

테스트 작성을 시작하려면 다음과 같이 작성합니다:

import { Test, TestingModule } from '@nestjs/testing';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';

describe('UsersController', () => {
  let controller: UsersController;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      controllers: [UsersController],
      providers: [UsersService],
    }).compile();

    controller = module.get<UsersController>(UsersController);
  });

  it('should be defined', () => {
    expect(controller).toBeDefined();
  });
});

결론

이 가이드에서는 NestJS를 사용하여 자바스크립트로 서버를 개발하는 방법에 대해 알아보았습니다. NestJS는 강력한 기능과 모듈화된 아키텍처를 제공하여 빠르고 효율적인 서버 개발을 가능하게 합니다. NestJS를 사용하여 다양한 프로젝트를 시작해 보세요!

#NestJS #JavaScript