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
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
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를 통해 연결되기 때문에 복잡하게 연결될수록 서로 의존성을 띄게됨