1. MVC 패턴과 REST API

MVC 패턴이란?

Model-View-Controller

소프트 웨어 디자인 패턴의 유형 중 하나로 사용자 인터페이스와 비즈니스 로직을 분리하여 모듈화, 유지보수성, 재사용성, 확장성에 용이하게 설계한 것이 특징이다.

MVC 패턴 이전

모든 로직이 하나의 파일에 집중되어 있고 비즈니스 로직과 UI 로직이 혼재해 있다. 코드 수정 시 영향을 받는 범위가 넓고, 새로운 기능을 추가하고 테스트하기가 어렵다. 이러한 코드는 협업이 비효율적일 수 밖에 없다. 음식점을 예로 들면, 직원 혼자 요리, 홀 서빙, 주문 받기 등을 다 하는 음식점인 것이다.

public class UserRegistration {
		// 사용자 등록 메서드
		public String register(String username, String password) {
		
				// 비즈니스 로직 - 유효성 검사
				if (username == null || password == null) {
						return generateErrorHtml("오류: 사용자 이름 또는 비밀번호가 nuLL입니다.");
				}
				if(password. Length() < 6) {
						return generateErrorHtml("오류: 비밀번호는 최소 6자리 이상이어야 합니다.");
				}
				
				// 비즈니스 로직 - 사용자 저장
				Database db = new Database();
				db. save(username, password);
				
				// 비즈니스 로직 - 감사 이메일 전송
				EmailService emailService = new EmailService();
				emailService.sendThankYouEmail(username);
				
				// UI 로직 - 성공 메시지 출력
				return generateSuccessHtml (username);
		}
		
		// 성공 HTML 생성 메서드
		private String generateSuccessHtml(String username) {
				return "‹html>«body>" +
							 "<h1>사용자 등록 성공!</h1>" +
							 "<p>환영합니다," + username + "님!</p>" +
							 "</body></html>";
		}
		
		// 오류 HTML 생성 메서드
		private String generateErrorHtml(String errorMessage) {
				return "chtml><bodyy" +
							 "<h1>오류</h>" +
							 "<p›" + errorMessage + "</p>" +
							 "</body></html>";
		}
}

MVC 패턴 이후

Model, Controller, View로 나누어 역할의 배분이 이뤄진다. 요리로 예를 들면 Model에는 요리 → 작업 처리 결과 데이터를 담당하고 Controller에서는 주문 받기, 서빙 → 사용자 입력, 전달, 업데이트를 담당, View에서는 플레이팅 → 유저 인터페이스를 보여주는 부분을 담당하는 것이라고 볼 수 있다.

Model

public class User {
		private String username;
		private string password;
		
		// Getter, Setter
		public String getUsername() {
				return username;
		}
		
		public void setUsername(String username) {
				this.username = username;
		}
		
		public String getPassword() {
				return password;
		}
		
		public void setPassword(String password) {
				this. password = password;
		}
}