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
'Backend 백엔드' 카테고리의 다른 글
[ 36 ] DI ( Dependency Injection ) , IoC ( Inversion of Control ) (1) | 2024.08.28 |
---|---|
[ 34 ] 객체지향 프로그래밍 (0) | 2024.08.22 |
[ 33 ] Class 실습 ! const 안붙이네? (1) | 2024.08.22 |
[ 32 ] 오픈그래프 스크랩핑 (0) | 2024.08.21 |
[ 31 ] 스크래핑과 브라우저 주소창의 원리 (0) | 2024.08.21 |