HTTP 핵심 정리

개발자 강세영·2022년 5월 9일
0

TIL

목록 보기
21/70

HTTP

HyperText Transfer Protocol 또는 HyperTexT Protocol의 약자이다
OSI 7계층에선 응용(Application) 계층에 속한다

현재 HTTP/1.1 버전이 일반적이며 일부 웹사이트는 HTTP/2를 사용 중이다
최신 규격으로 HTTP/3가 있지만 아직까지는 사용되는곳이 많지 않다.

HTTP 특징

기본적으로 요청/응답(request/response) 구조로 되어있다.
Stateless 한 특징이 있다. 이를 보완하기 위해 토큰,세션 등을 활용한다.
HTTP가 Stateless 하게 된 이유는 stateful 하게 되면 웹서버의 부하가 커서 유지비용이 비싸고 웹 서비스의 효율성도 떨어지기 때문이다. 그러나 stateless의 단점도 있어서 이를 보완하기 위해 다른 stateful한 기술을 병용하기도 한다.

HTTP request/response 구조

request

start line: 시작하는 줄로 메서드 구조이다. 어떤 HTTP 메서드인지 어느 URL로 요청한건지 그리고 HTTP 버전 등이 표시된다.

headers:
Key:Value 형식으로 되어있다. 타겟 URL, 클라이언트 정보, body의 정보, body의 길이, 인증/인가 관련 정보 등 request 자체에 대한 정보(메타 데이터)들이 담겨있다.

body: 요청을 할 때 함께 보낼 데이터를 담는 부분이다. GET은 body가 없어도 상관없으며 POST 시 주로 사용된다.

response

status line: HTTP버전, 상태코드, 상태메시지가 담겨있다.

headers: response 자체에 대한 정보(메타 데이터)들을 담고 있다. 단 서버 측에서 보내는 것이기 떄문에 클라이언트가 아니라 서버 측 정보가 담겨있다.

body: HTML, JS, 이미지 파일 등 요청한 데이터가 담겨 있다. 백엔드 API 응답의 경우 JSON 타입을 많이 사용한다. 실제로는 데이터를 주고 받았지만 body의 내용은 없을 수도 있다.

HTTP Methods

GET은 보통 리소스를 조회할 때 사용하며, 서버에 전달하고 싶은 데이터는 query를 통해서 전달한다. 메시지 바디를 사용해서 데이터를 전달할 수는 있지만, 지원하지 않는 곳이 많아서 권장하지 않는다.

POST는 데이터 요청을 처리하고, 메시지 바디를 통해 서버로 데이터를 전달한다. 주로 신규 리소스를 등록하거나 프로세스 처리에 사용된다.

DELETE는 리소스를 제거할때 사용한다.

PUT은 리소스가 있으면 대체하고 리소스가 없으면 생성한다. 쉽게 말해 데이터를 덮어쓴다.

PATCH는 PUT과 마찬가지로 리소스를 수정할 때 사용하지만, PATCH는 리소스를 일부분만 변경할 수 있다.

HTTP 메서드별 차이점

HTTP 중요 Status Code

200: 서버가 요청을 제대로 처리했다는 뜻
201: 서버가 새 리소스를 작성하는데 성공했다는 뜻, POST에서 확인할것
400: 사용자의 잘못된 요청을 처리할 수 없음
401: 클라이언트가 인증받지 않은 상태에서 요청했다는 뜻
403: 클라이언트가 콘텐츠에 접근할 권리가 없을때
404: 서버에서 요청받은 리소스를 찾을 수 없다는 뜻
405: 서버에서 허용하지 않은 메소드로 요청시 나옴
500: 서버에 무언가 문제가 있다는 뜻, 코드에 오류가 있으면 나올 수 있음
503: 서버가 요청에 준비가 안됐다는 뜻, 유지보수 작업중이나 과부하 상태에서 주로 뜸
504: Gateway timeout, 서버 간의 네트워크 또는 실제 서버에 문제가 생겨서 요청에 답하지 못하는 상태

0개의 댓글