분류 전체보기 (108) 썸네일형 리스트형 [Nest.js] DTO Nest.js에서 클라이언트와 데이터 통신을 하기 위해서는 DTO(Data Transfer Object)를 사용해야 합니다. DTO는 데이터를 전송하기 위해 작성된 객체로 Nest.js에서는 모든 데이터를 DTO로 주고받습니다. DTO를 작성하기 위한 패키지 설치 $ npm i class-validator class-transformer DTO 클래스 작성 // create-article.dto.ts import { IsNumber, IsString } from 'class-validator'; export class CreateArticleDto { @IsString() readonly title: string; @IsString() readonly content: string; @IsNumber() .. [Nest.js] 게시판 만들기 새로운 모듈 만들기 $ nest g mo board src 폴더 내에 board 폴더가 자동으로 생성되고 board.module.ts 라는 타입스크립트 코드가 생성되어있다. // board.module.ts import { Module } from '@nestjs/common'; @Module({}) export class BoardModule {} 컨트롤러 생성 $ nest g co board 모듈을 생성할 때와 같이 board 폴더에 코드가 생성된다. // board.controller.ts import { Controller } from '@nestjs/common'; // Controller 데코레이터 옆에 문자열은 라우팅 룰이라고 생각하시면 됩니다! // 이 컨트롤러는 /board 라는 주소 아.. [Nest.js] IoC와 DI IoC (Inversion of Control) : 제어 역전 기존에는 어떤 서비스를 사용하고 싶으면 아래와 같은 코드를 직접 작성해야 했다. import { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() export class AppController { // 1. 사용하고 싶은 서비스 타입 객체를 미리 선언합니다. private appService: AppService constructor() { // 2. 생성자에서 실제로 사용할 서비스 객체를 직접 생성합니다. this.appService = new AppService(); } ... } 어떤 객체를 사용하고 싶을 때 .. [Nest.js] 프로젝트 기본 코드 분석 1. main.ts main.ts는 Nest.js에서 진입점으로 사용하겠다고 사전에 약속된 파일이므로 임의로 파일명을 변경해서는 안된다.(중요) import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000); } bootstrap(); Nest.js 웹 어플리케이션의 진입점으로 NestFactory 클래스의 create라는 정적 함수를 통해 Nest.js 어플리케이션 인스턴스를 새롭게 생성한다. const app = await NestF.. [Nest.js] 설치하기 터미널에 입력해서 설치 npm i -g @nestjs/cli nest 명령어 보기 nest 모르는 명령어가 있을 때 입력해서 확인할 수 있다. 새로운 프로젝트 만들기 // nest n "프로젝트명" nest new sparta-nest 입력하면 아래와 같이 나오는데 Nest.js와 가장 호환이 잘 되는 npm에서 Enter 키를 누르면 된다. ? Which package manager would you ❤️ to use? (Use arrow keys) ❯ npm yarn pnpm 레이어드 아키텍처 패턴 layered architecture 레이어드 아키텍쳐 패턴은 웹 서버 구현 시 가장 보편적으로 사용되는 구현 패턴입니다. SOLID(객체 지향 설계) 원칙의 SRP(단일 책임 원칙)을 근거로 작성된 아키텍쳐로 하나의 모듈, 클래스 또는 함수가 하나의 기능만을 책임지는 패턴입니다. 일반적으로 다음 3개의 계층으로 나누어 집니다. presentation layer(표현 계층) = Controller business layer(비즈니스 계층) = Service data layer(데이터 계층) = Repository 프레젠테이션 계층(표현 계층) = 컨트롤러 클라이언트와 통신을 직접적으로 담당하며 클라이언트의 요청을 해석하고 응답하는 계층입니다. 클라이언트와 통신하는 API를 제공하며 컨트롤러로 대변됩니다. 비지니스 계층으로 요청을 위임하고 받.. [Nest.js] Express와 Nest.js Express는 웹 및 모바일 애플리케이션을 위한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다. Express 프레임워크의 단점 사용하고 싶은 미들웨어 마다 미들웨어 선언을 해줘야 한다. 레이어드 아키텍처 패턴을 나타낼 때 디렉토리 구조를 명확하게 설계해야 하고 서비스 요구사항 변경 및 기획이 추가됨에 따라서 필요한 개념들을 새롭게 추가해야된다. const express = require('express') const bodyParser = require('body-parser'); const cookieParser = require('cookie-parser') const cors = require('cors') const app = express() app.use(bo.. [EJS][JQuery] DB 정보 수정하기(이미지와 다른 데이터 분리) 클라이언트 form 에는 put method가 없어 다른 데이터와 다르게 보내야 한다. 다른 데이터는 JQuery ajax를 통해 보내고 이미지는 form으로 보내는 방식으로 따로 보내게 했다 ajax로 이미지 보내는 방법도 있었는데 사용하기가 쉽지가 않았다 상품 조회 및 수정 페이지 수정하기 이미지수정 서버 router.put("/goods/modify/:id", managerController.goodsModify); router.post( "/goods/modify/image/:id", upload.single("image"), managerController.goodsImgModify ); 상품 정보는 put 메소드로 보내고 상품 이미지는 post로 보내기로 했다 // 상품 수정 goodsModi.. 이전 1 2 3 4 5 6 7 ··· 14 다음