[Spring] Http & MVC 패턴

박성우·2023년 4월 17일
0

Spring

목록 보기
1/10

HTTP (Hyper Text Transfer Protocol)

텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜

클라이언트가 브라우저를 통해서 서비스를 서버에 요청(Request)하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 클라이언트에게 응답(Response)한다.

HTTP 구조

Start Line - Headers - Body

- Request HTTP

1. Start Line : HTTP Method, 요청 URL, HTTP 버전 정보

GET /index.html HTTP/1.1

2. Headers : 서버에 전달하는 추가 정보, 요청 메세지의 속성

Host: www.seongwop.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...
Upgrade-Insecure-Requests: 1
Accept-Language: en-US,en;q=0.9,ko;q=0.8

3. Body : 요청과 함께 보낼 데이터, GET 요청은 포함하지 않음

- Response HTTP

1. Start Line : HTTP 버전, 응답 상태 코드, 코드 설명

HTTP/1.1 200 OK

2. Headers : 클라이언트에 전달하는 추가 정보, 응답 메세지의 속성

Content-Type: text/html; charset=utf-8
Content-Length: 1234

3. Body : 응답과 관련된 데이터, 응답이 HTML이라면 HTML 코드를 담음

Request Method

  • GET : 서버로부터 특정 리소스(HTML 파일, 이미지, 동영상 등)를 요청
  • POST : 서버에 웹 폼(form) 을 사용하여 데이터를 제출할 때 사용하며, 데이터를 Body 에 담아서 서버로 전송
  • PUT : 서버에 새로운 리소스를 생성하거나, 기존의 리소스를 갱신
  • DELETE : 특정 리소스 삭제
  • PATCH : 서버에 존재하는 리소스의 일부 수정

Status Code

  • 1xx (Informational) : 요청을 수신했고, 처리 진행
  • 2xx (Successful) : 요청을 성공적으로 처리
  • 3xx (Redirection) : 클라이언트로부터 추가적인 동작 필요
  • 4xx (Client Error) : 클라이언트에 오류 존재, 404는 클라이언트가 요청한 페이지나 리소스가 서버에 없을 경우
  • 5xx (Server Error) : 서버 오류, 서버 과부하

MVC (Model-View-Controller) 패턴

소프트웨어 디자인 패턴으로써, 소트프웨어를 구성하는 요소들을 각각 구분하여 코드의 재사용성과 유지보수성을 높이는 패턴

Model

  • 데이터와 비즈니스 로직을 담당하는 객체로써, 데이터베이스와 연동하여 데이터를 저장하고 불러오는 등 작업 수행
  • 서비스 객체라고 볼 수 있음

View

  • 사용자가 보는 화면과 버튼, 폼 등을 디자인하고 구현하는 인터페이스
  • HTML/CSS/JavaScript를 모아둔 컨테이너

Controller

  • Model과 View 사이의 상호작용을 조정하고 제어
  • 사용자의 입력을 받아 Model에 전달하고, Model의 결과를 바탕으로 View를 업데이트

- MVC 패턴의 장점

  • 비즈니스 로직과 UI 로직을 분리하여 유지보수를 독립적으로 수행 가능
  • Model과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리
  • 중복 코딩의 문제점 제거

- MVC 패턴의 단점 및 한계

  • View와 Model이 Controller를 통해 연결되기 때문에 복잡하게 연결될수록 서로 의존성을 띄게됨
profile
Backend Developer

0개의 댓글