Backend 백엔드

[ 35 ] MVC 패턴 실습

박민우_ 2024. 8. 22. 16:57

MVC 패턴

Model

소프트웨어나 애플리케이션에서 정보 및 데이터 부분을 담당한다. Controller로 부터 데이터를 받아서 처리하고 그 결과값을 반환한다

Controller 

Model 과 View 사이에서 비지니스 로직을 처리하는 역할을 한다. URL에 따라 요청을 파악하고 적절한 서비스와 Model에 데이터를 전달한다. 

View

Controller로부터 돌려받은 데이터를 가지고 시각적인 부분을 처리해서 user에게 반환한다 ( 요즘은 프론트엔드에서 이작업을 하므로 백엔드에서 HTML을 작성하는 일은 많지 않다 ) 

 

폴더구조 

코드

// product.controller.js 파일

import { CashService} from './services/cash.service'
import {ProductService} from './services/product.service'


class ProductController {

    buyProduct = (req,res)=>{
            // 1. 가진 돈 검증하는 코드 ( 대략 10줄 정도  )
    const cashService = new CashService()
    const hasMoney = cashService.checkValue()

    // 2. 판매여부 검증하는 코드 ( 대략 10줄 정도 )
    const productService = new ProductService()
    const isSoldout = productService.checkSoldout()
    
    // 3. 상품 구매하는 코드
    // if(hasMoney && !isSoldout) {
    //     res.send(" 상품 구매 완료 ")
    // }
    }

    refundProduct = (req,res)=>{
            // 1. 판매여부 검증하는 코드 ( 대략 10줄 정도 )
    const productService = new ProductService()
    const isSoldout = productService.checkSoldout()


    // 2. 상품 환불하는 코드
    if(isSoldout){
        res.send(" 상품 환불 완료 ")
    }
    }
}

 

// cash.service.js 파일
// product.service.js 파일

export class CashService { 
    checkValue = () =>{
            // 1. 가진 돈 검증하는 코드 ( 대략 10줄 정도  )
    // ...
    // ...
    // ...
    // ...
    }
}

export class ProductService {
    checkSoldout  = () =>{
            // 2. 판매여부 검증하는 코드 ( 대략 10줄 정도 )
    // ... 
    // ... 
    // ... 
    // ... 
    // ...
    }
}
// index.js 파일

// const express = require('express') // 옛날 방식 => commonjs
import express from 'express' // 요즘 방식 => module
import { ProductController } from './mvc/controllers/product.controller.js'

const app = express()

const productController = new ProductController()
app.post('/products/buy', productController.buyProduct) // 상품 구매하기
app.post('/products/refund', productController.refundProduct) // 상품 환불하기

// 상품 판매하기 API
app.listen(3000,()=>{
    console.log('서버 시작')
});

Nest.js 에서의 MVC 패턴 

728x90