클라이언트 - 서버 구조에서 상호 네트워킹을 하며 데이터를 주고 받는데 이때, HTTP 프로토콜을 이용하는 애플리케이션을 웹 애플리케이션이라고 한다.
1. HTTP 프로토콜
W3C에서 정한 기준으로 데이터를 처리한다.
HTTP 프로토콜은 HTTP Request 규약과 HTTP Response 규약으로 나누어 진다.
1-1. HTTP Request
- 브라우저에서 서버로 넘어가는 규약
- 프론트 애플리케이션이 백엔드에 전달하는 데이터에 대한 규약
- HTTP 통신에서 주고 받느 데이터는 header와 body로 구분된다.
- header : 부가 정보
- body : 실제 전달하는 데이터 → Front App data
- HTTP Request Method : 서버 요청 방식
- User-Agent는 요청하는 프론트에 대한 정보로 브라우저명, 브라우저 버전등에 대한 정보가 담겨있다.
- HTTP Request Method는 흔히 요청 방식이라고 하며,
- GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS 가 있다.
- GET: 서버에서 데이터를 가져오기 위한 요청. 주로 웹 페이지나 API의 데이터를 읽어오는 데 사용된다. - 데이터 획득
- POST: 서버에 데이터를 보내기 위한 요청. 주로 새로운 리소스를 생성하거나 데이터를 제출하는 데 사용된다. - 저장
- PUT: 서버의 기존 데이터를 업데이트하기 위한 요청. 주로 리소스를 수정하는 데 사용된다. - 전체수정
- DELETE: 서버의 데이터를 삭제하기 위한 요청.
- PATCH: 서버의 기존 데이터를 부분적으로 업데이트하기 위한 요청x - 일부 수정
- HEAD: GET 요청과 유사하지만, 응답 본문(body)을 제외한 헤더 정보만 요청한다.
- OPTIONS: 서버에서 사용 가능한 통신 옵션을 확인하기 위한 요청.
- GET, POST, PUT, DELETE, HEAD, PATCH, OPTIONS 가 있다.
- 백엔드에 요청할 때 요청 방식을 따로 지정하지 않으면 기본으로 GET 방식으로 요청된다.
1-2. HTTP Response
- 서버에서 브라우저로 넘어가는 규약
- 백엔드에서 프론트에 전달되는 데이터를 HTTP Response라 하며 이 HTTP Response도 header와 body로 구성된다.
- header는 부가정보이며, body가 실제 백엔드에서 프론트에 전달하는 데이터이다.
- 웹임으로 HTML 문서가 body에 담겨서 전달될 수도 있고, JSON 형식의 데이터일수도 있다.
상태 코드는 숫자로 표현되며 프론트의 요청을 어떻게 처리 한 것인지에 대한 상태를 표현하는 순지
- 2xx : 요청을 정상적으로 처리했음
- 3xx : 요청 완료를 위해 추가적인 작업이 필요함
- 4xx : 요청 잘못으로 요청을 처리하지 못함
- 5xx : 서버 잘못으로 요청을 처리하지 못함
URL 분석
- 프론트가 백엔드에 요청하는 업무 혹은 데이터를 통칭해서 리소스라고 한다.
- Resource를 보고 어떤 요청인지 파악한다.
- 프론트에서 원하는 리소스가 식별될 수 있게 URL을 구성해서 백엔드에 요청을 하고, 백엔드는 요청 정보의 URL을 분석해서 어떤 리소스를 프론트에게 서비스 할 것인지를 판단하게 된다.
- URL은 Uniform Resource Locator의 약어이며, 아래의 구조로 만들어진 문자열이어야 한다.
프로토콜 : 네트워킹에 사용할 통신 규약으로 웹에서는 일반적으로 HTTP 또는 HTTPS가 사용된다.
호스트
- 흔히 도메인이라고 불리며, 서버의 네트워크 상에서 주소
- 서버의 IP주소 일 수도 있고, 도메인 일수도 있다.
- 이 호스트에 의해 네트워크 상의 어느 서버와 통신할것인지가 결정된다.
포트
- 하나의 서버에서 네트워킹하는 애플리케이션을 식별하기 위한 숫자
- 웹의 HTTP로 통신하는 경우 포트를 생략하게 되면 자동으로 80 포트가 지정된다.
경로 (/)
- / path라 한다. 주소의 리소스
쿼리 문자열(or Search String)
- ? key = value & key = value (규칙이 있음)
- 프론트에서 백엔드에 요청을 하면서 전달하는 데이터
- 클라이언트가 가지고 있는 정보(데이터)를 백엔드(서버)에서 해석하는 것
해시(#)
- 규칙이 없음
- 있을 수도 있고, 없을 수도 있다.
- 백엔드랑 관련이 없다
- 현재 상태표현(프론트)
- 프레임워크에서는 해시가 중요해진다.
'CS' 카테고리의 다른 글
HTTP(Hyper Text Transfer Protocol) (0) | 2024.11.25 |
---|---|
프로그래밍 패러다임 / 선언형과 함수형 프로그래밍 (0) | 2024.07.21 |
노출모듈 패턴 / MVC 패턴 / MVP 패턴 / MVVM 패턴 (0) | 2024.07.14 |
옵저버 패턴 / 프록시 패턴과 프록시 서버 / 이터레이터 패턴 (0) | 2024.07.05 |
싱글톤 패턴 / 팩토리 패턴 / 전략 패턴 (0) | 2024.06.29 |