본문 바로가기

NestJs9

[NestJs] Swagger로 API 문서 작성하기 안녕하세요. 오늘은 백엔드 개발자라면 작성해야할 API 문서를 Swagger를 통해 손쉽게 작성해 볼게요. 오늘도 가장 먼저 라이브러리를 설치해 보겠습니다. npm install @nestjs/swagger 먼저 swagger.util.ts 파일을 생성해주세요 import { INestApplication } from "@nestjs/common"; import { SwaggerModule, DocumentBuilder, SwaggerCustomOptions } from '@nestjs/swagger'; const swaggerCustomOption: SwaggerCustomOptions = { swaggerOptions: { persistAuthorization: true, }, }; export fu.. 2024. 4. 23.
[NestJs] 게시물에 시간 추가하기 안녕하세요.오늘은 지난 시간에 이어 게시물에 게시한 날짜와 시간을 같이 입력해 저장해 볼게요. 먼저 moment-timezone 라이브러리를 설치해주세요. 그리고 date.util.ts라는 파일을 만들어 줄게요. 그때 그때 사용해도 좋지만 미리 세팅해놓고 가져다 쓰는게 나중에는 편할거에요 import * as moment from 'moment-timezone'; export default class DateUtils { // 2024-04-01 19:40:34 static momentNow(): string { return moment().tz('Asia/Seoul').format('YYYY-MM-DD HH:mm:ss'); } // 18:00 static momentTime(): string { ret.. 2024. 4. 14.
[NestJs] TypeORM을 사용해서 게시물 CRUD 만들기 안녕하세요. 오늘은 지난 시간 배열을 이용해서 저장하던 게시물을 db에 저장할 수 있게 작업하려고 합니다. 설정은 지난 시간에 모두 마친것으로 알고 진행하겠습니다. 먼저 src 폴더 하위에 core라는 폴더를 만들고 그 안에 typeorm-ex.decorator.ts, typeorm-ex.module.ts를 생성해 주세요. 먼저 typeorm-ex.decorator.ts 파일입니다. import { SetMetadata } from '@nestjs/common'; export const TYPEORM_EX_CUSTOM_REPOSITORY = 'TYPEORM_EX_CUSTOM_REPOSITORY'; export function CustomRepository(entity: Function): ClassDec.. 2024. 4. 5.
[NestJs] TypeORM 설치 및 설정하기 안녕하세요. 오늘은 지난 시간에 이어 데이터를 실제 데이터 베이스에 저장을 해볼 겁니다. 데이터베이스는 Mysql을 이용하여 실습할 예정이니 미리 mysql을 설치해주시길 바랍니다. 먼저 설치부터 해볼게요. 아래 명령어를 입력해주세요. npm install @nestjs/typeorm typeorm mysql2 그리고 저희는 환경 변수를 사용해서 설정을 할 건데 미리 설치해야 될게 있습니다. npm install @nestjs/config cross-env dotenv 모두 설치가 완료되었다면 root 경로에 .env파일을 생성해주세요. DB_HOST = 'DB 호스트' DB_PORT = 3306 DB_USERNAME = 'DB 유저 이름' DB_PASSWD = 'DB 비밀번호' DB_DATABASE =.. 2024. 3. 27.
[NestJs] 게시물 수정 및 삭제하기 안녕하세요. 오늘은 게시물 수정 및 삭제를 해보겠습니다. 먼저 service파일입니다. import { Injectable, NotFoundException } from '@nestjs/common'; import { CreateBoardDto } from './board.dto'; @Injectable() export class BoardService { private boards = []; private id = 1; create(createBoardDto: CreateBoardDto){ createBoardDto.id = this.id; this.boards.push(createBoardDto); this.id++; return createBoardDto; } getAll(){ return this.. 2024. 3. 18.
[NestJs] ValidationPipe로 유효성 검사하기 안녕하세요. 오늘은 API 요청을 처리하기 전에 ValidationPipe를 사용하여 미리 요청한 값을 검사하는 로직을 짜보겠습니다. 먼저 npm install class-validator class-transformer 유효성 검사를 위해 위 라이브러리를 설치해주세요. 그리고 전 시간에 작성한 board.dto.ts 파일에서 유효성 검사의 조건을 입력하겠습니다. import { IsNotEmpty, IsString } from "class-validator"; export class CreateBoardDto { @IsNotEmpty() @IsString() title: string; @IsNotEmpty() @IsString() description: string; } @IsNotEmpty()그리고 .. 2024. 3. 9.
[NestJs] 게시판 생성 및 불러오기 안녕하세요. 오늘은 지난 시간에 생성한 board 모듈을 이용해 게시판 생성 및 불러오는 작업을 해보겠습니다. 먼저 controller 작업하기 전에 DTO를 보고 넘어가겠습니다. NestJs는 DTO를 사용해 데이터 형식을 지정합니다. 이는 데이터 전송 객체의 약자이며, 또 다른 역할로는 서버에서 요청을 처리하기 전에 데이터의 유효성을 검사할 수 있습니다. 그럼 먼저 board폴더 안에 board.dto.ts를 생성해 보겠습니다. export class CreateBoardDto { title: string; description: string; } 이렇게 요청할 데이터 형식을 미리 만들어서 받을 수 있습니다. 그리고 유효성 검사를 위해 따로 설정을 해야 되는데 이는 다음 시간에 하겠습니다. 먼저 Se.. 2024. 2. 29.
[NestJs] Controller 및 Service 생성 안녕하세요. 오늘은 지난 시간에 이어 Controller와 Service를 생성해 보겠습니다. NestJs는 기본적으로 모듈화되어 있고 이로 인해 유지보수와 개발이 편한데요 기본적인 구조는 아래와 같습니다. 위 구조를 보면 Root Module에 다양한 모듈이 Import가 되어 있는것을 볼 수 있는데 Nestjs는 각 기능을 모듈화 하고 그 모듈 안에서 개발이 가능하여 분리도 잘되어 있고 코드를 보기에도 편합니다. 그리고 각 모듈에는 Controller와 Service가 있습니다. Controller는 클라이언트에서 들어오는 Request를 받는 역할과 Response를 하는 역할을 합니다. 우선 지난 시간에 생성한 프로젝트 구조를 조금 수정해보겠습니다. 생성된 폴더 안에는 src폴더가 있고 그 안에 .. 2024. 2. 20.
[NestJs]NestJs 설치 및 프로젝트 생성 안녕하세요. 오늘은 NodeJs의 백엔드 프레임워크인 NestJs를 설치하고 실행까지 해보겠습니다. NestJs는 express가 구성되어 있고 express의 단점인 로직 구성이 너무 자유롭다는 문제를 해결하기 위해 MVC패턴의 아키텍처를 도입하여 보다 구조화되어 있고 체계적입니다. 그리고 NestJs는 TypeScript 언어 기반이며, javascript와 비교해 보면 정적 타입검사, 객체 지향 프로그래밍 등 다른 언어들이 사용하던 기능을 제공합니다. 이는 개발 단계에서 버그를 사전에 방지하고, 코드 재사용 및 유지 보수성을 높여주는 장점이 있습니다. 그럼 이제 설치를 해보겠습니다. Nodejs가 설치가 되어 있다는 가정하에 npm install @nestjs/cli 위 명령어로 설치가 끝나셨다면 .. 2024. 2. 11.