카테고리 없음

13주차 (4)

jaeoun0238 2025. 1. 23. 22:52

1. 진입점 파일 (main.ts)
Nest.js 웹 애플리케이션의 시작점
NestFactory를 사용하여 애플리케이션 인스턴스 생성
2. 모듈 (app.module.ts)
애플리케이션의 구조를 정의
@Module 데코레이터 사용
imports, controllers, providers, exports 속성 포함
3. 컨트롤러 (app.controller.ts)
HTTP 요청 처리
@Controller 데코레이터 사용
서비스에 의존, 생성자를 통한 DI 사용
4. 서비스 (app.service.ts)
비즈니스 로직 처리
@Injectable 데코레이터 사용
컨트롤러에 서비스 제공
5. IoC (제어 역전)와 DI (의존성 주입)
IoC: 객체 생명주기 관리를 외부에 위임
DI: IoC 구현 방법, Nest.js의 DI 컨테이너 사용
모듈 간 결합도 감소, 유연성 증가
이 구조를 통해 Nest.js는 모듈화, 확장성, 유지보수성이 높은 애플리케이션 개발을 지원합니다.

 

내컴퓨터 위치에서 실행하려고 해서 오류가 계속 났었습니다.

 


ec2에서 접속하듯이 이런식으로 접근을 했었어야했는데 억지로 내컴퓨터에서 접속하려고했으니 ㅜㅜ.. 제대로 잘못짚었던것..!

mysql -h "엔드포인트" -P 포트 -u 마스터사용자이름 -p

이렇게 하니 해결!

 

tilte content password 3가지를 제대로 받았을때 넘어가도록 하는 dto파일인데

import { IsNotEmpty, IsNumber, IsString } from 'class-validator';

export class CreatePostDto {
  @IsString()
  @IsNotEmpty({ message: '게시물의 제목을 입력해주세요.' })
  readonly title: string;

  @IsString()
  @IsNotEmpty({ message: '게시물의 내용을 입력해주세요.' })
  readonly content: string;

  @IsNumber()
  @IsNotEmpty({ message: '게시물의 비밀번호를 입력해주세요.' })
  readonly password: number;
}

그럼에도 불구하고 titles라는 일부러 버그를 줬는데도 생성이되는 버그 발생..!!!

 

main.ts에 코드추가

app.useGlobalPipes(
    new ValidationPipe({
      // 요청 데이터를 DTO(Data Transfer Object) 클래스로 자동 변환
      transform: true,
      // DTO 클래스에 정의된 속성만 요청 데이터에 남기고, 나머지 속성은 제거
      whitelist: true,
      // DTO 클래스에 정의되지 않은 속성이 요청 데이터에 포함된 경우, 유효성 검사에서 에러를 발생
      forbidNonWhitelisted: true,
      
      forbidUnknownValues: true,
    }),
  );

 

제대로 오류가 실행됐습니다..!!

이제 제대로 정상 작동중!

 

최종유지보수 코드!

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  app.useGlobalPipes(
    new ValidationPipe({
      // 요청 데이터를 DTO(Data Transfer Object) 클래스로 자동 변환
      transform: true,
      // DTO 클래스에 정의된 속성만 요청 데이터에 남기고, 나머지 속성은 제거
      whitelist: true,
      // DTO 클래스에 정의되지 않은 속성이 요청 데이터에 포함된 경우, 유효성 검사에서 에러를 발생
      forbidNonWhitelisted: true,

      forbidUnknownValues: true,
    }),
  );
  await app.listen(process.env.PORT ?? 3000);
}
bootstrap();