본문 바로가기

개념정리

프론트개발자가 알아야 하는 HTTP통신

프론트엔드 개발자라면 HTTP통신 감옥에서 벗어날 수 없다.

 

HTTP (Hypertext Transfer Protocol)

클라이언트와 서버 간 통신을 위한 통신 규칙세트 TCP/IP 통신 위에서 메세지를 교환하기 위해 사용되는 프로토콜(규약)이다.

"내가 뫄 라고 보내면 넌 마 라고 받고 니가 나한테 준 건 롸 라고 받을게"

 

URL (Uniform Resource Locators) 

서버에 자원을 요청하기 위해 입력하는 웹 페이지상의 표시 주소, IP주소보다 기억하기 쉽다.

컴퓨터 네트워크 상에서 리소스가 어디있는지 알려주기 위한 규약

MDN

 

HTTP의 기본 흐름

Client to Server

클라이언트는 브라우저라는 웹 어플리케이션을 이용해서 웹 서버에게 무언가를 요청(Request)한다.

Server to Client

요청을 받은 웹 서버는 해당 요청에 대한 응답(Response)을 클라이언트에게 보내준다. 

응답은 보통 브로토콜 버전, 상태코드, 상태코드 설명, 헤더, 바디 로 구성되어 있다.

 

HTTP 요청 메소드

멱등성(Idempotent)

수학이나 전산학에서의 연산의 한 성질, 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 의미.

즉, 동일한 요청을 여러번 보내도 한 번 보내는 것과 같다. 요청의 결과를 보고 판단한다.

POST를 제외하고 GET, PUT, DELETE는 멱등성이 성립한다.

 

GET 리소스 조회 바디를 사용해서 데이터를 전달할 수 있음. 캐싱이 가능함. 쿼리 파라미터 없이도 리소스 경로로 단순하게 조회 가능
전송길이 제한있음
POST 요청 데이터 처리, 등록 전달한 데이터를 처리/생성 요청.
바디를 통해서 서버로 요청.
데이터 GET을 해야하는데 JSON으로 조회 데이터를 넘겨야 할 경우 POST 사용
전송길이 제한 없음
캐싱 불가능
PUT 리솟를 대체(덮어쓰기), 
리소스 없으면 생성
데이터를 대체해야 하니 클라이언트가 리소스의 구체적인 전체 경로를 지정해서 보내주어야 함. 기존에 데이터가 없다면 POST와 같이 신규로 생성을 한다.
기존 데이터가 완전히 대체되기 때문에 부분만 하려면 PATCH
PATCH 리소스 부분 변경
(PUT은 전체변경, PATCH는 일부 변경)
만일 PATCH를 지원하지 않는 서버에서는 POST로 대체하여 사용  
DELETE 리소스 삭제    

 

HTTP의 비연결성 (Connectionless)

HTTP는 기본이 연결을 유지하지 않는 모델 (서버와 클라이언트의 Connection을 지속하지 않는다.)

수천명이 서버에 접속해도 실제 서버에서 동시에 처리하는 요청은 적다. (검색페이지에서 검색 버튼을 클릭하기만 하는 것)

이러한 비연결성 특성 때문에 서버 자원을 효율적으로 사용할 수 있다.

 

HTTP의 무상태성 (Stateless)

서버가 클라이언트의 상태를 보존하지 않는다. (회원로그인을 하지 않고 페이지를 옮기면 또 로그인하라는 페이지가 뜬다)

무상태 환경에선 회원정보를 서버가 아닌 클라이언트가 토큰 형태로 들고 있으면서 서버와 통신할 때 실어보내 인증한다.

이러한 무상태 환경은 클라이언트가 상태 정보를 갖고 있는 것이기 때문에 아무 서버나 호출하여 사용할 수 있고 

서버의 스케일아웃(수평확장)에 유리하다.

 

 

HTTP 상태 코드

  1. 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행
  2. 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용
  3. 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요
  4. 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없음
  5. 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패

'개념정리' 카테고리의 다른 글

가비지 컬렉션? 가비지 컬렉터?  (0) 2024.05.29
Local Storage, Session Storage, Cookie  (0) 2024.01.15
Virtual Dom, 가상돔 ?  (1) 2024.01.10
SASS ? SCSS ? 뭐가다른디  (0) 2024.01.10
세션? 토큰? JWT?  (1) 2023.12.11