HTTP는 HyperText Transfer Protocol의 약자로 웹 상에서 브라우저와 서버가 데이터를 주고받기 위한 표준 규약을 말한다.
HTTP는 Stateless(무상태 ) 특징을 가진다. HTTP가 REST와도 밀접한 관계가 있기에 REST의 Stateless 특징과 동일한 뜻을 가진다.
HTTP는 이전 Request와 다음 Request를 각각 독립적인 요청으로 판단한다.
따라서, 서버는 클라이언트에서 관리되는 세션, 쿠키등의 정보를 서버에 저장하지 않고 단순 브라우저에서 들어오는 Request를 처리하고 Response 한다.
HTTP는 Request를 독립적으로 처리하기 때문에 해당 Request가 서버로 부터 어떠한 데이터를 받고자 하는지 동작 정보를 서버에게 전달해줘야한다.
그러므로, 브라우저는 서버에 Request할 때 URL과 HTTP Method를 가지고 어떠한 동작을 통해 어떤 데이터를 주고받을지 HTTP Message에 정의한다.
이때, 서버에게 “어떠한 동작을 할지 나타내는 것”을 HTTP Mehtod라고 정의할 수 있다.
자주 사용하는 메소드에는 기본적인 C,R,U,D (Create, Read, Update, Delete) 동작을 지원하는 “POST, GET, PUT/PATCH, DELETE”가 있고, 이외에도 HEAD, OPTIONS, CONNECT와 같은 메소드가 존재한다.
“GET” 메소드는 C,R,U,D 동작 중 Read에 해당하는 동작을 나타낸다.
클라이언트가 서버에게 Request를 통해 존재하는 리소스에 대해서 정보를 요청할 때 사용된다.
서버는 해당 Request를 통해 데이터를 가져오고 수정하지 않은 그대로 클라이언트에게 데이터를 전달한다.
“POST” 메소드는 C,R,U,D 동작 중 Create에 해당하는 동작을 나타낸다.
클라이어트가 서버에게 Request를 통해 새로운 리소스를 생성해달라는 요청에 사용된다.
“PUT”과 “PATCH” 메소드는 C,R,U,D 동작 중 Update에 해당하는 동작을 나타낸다.
두 메소드 모두 클라이언트가 서버에게 Request를 통해 존재하는 리소스에 대해 수정을 요청할 때 사용된다.
PUT과 PATCH 메소드를 구분하는 데에는 Update의 특성 상 두 가지 Update 상황이 존재하기 때문이다. 일반적으로 Update 시에는 데이터 전체를 수정하는 경우와 데이터 일부만을 수정하는 2가지 경우가 있다. 데이터 전체를 수정하는 첫 번째 경우에는 PUT 메소드를 사용하고, 데이터 일부를 수정하는 두 번째 경우에는 PATCH 메소드를 사용한다.
하지만, 일반적으로는 두 가지 모두의 경우를 통틀어 PUT 메소드를 사용한다.
PUT은 데이터 전체 수정(없는 경우 새로 생성) , PATCH는 데이터 일부 수정
“DELETE” 메소드는 메소드 이름에서 부터 알 수 있듯 Delete에 해당하는 동작을 나타낸다.
클라이언트가 서버에게 Request를 통해 존재하는 리소스를 삭제하는 요청을 할 때 사용된다.
HEAD는 GET과 동일한 방식이지만 서버가 응답에 BODY를 포함하지 않는다.
OPTIONS는 시스템에서 지원되는 메소드 종류를 확인할 수 있다.
CONNECT는 웹 서버에 Proxy 기능을 요청할 때 사용한다.
Request와 반대로 서버가 클라이언트에게 요청에 대해 Response 할 때에는 서버가 해당 요청에 대해서 어떠한 동작을 했는지 응답해주는 정보를 클라이언트에게 제공한다.
즉, 서버가 주는 요청에 대한 응답 정보를 HTTP Status Code 라고 한다. 서버는 HTTP Status Code와 요청에 대한 응답 데이터를 담은 Response Body와 함께 클라이언트에게 데이터를 전달한다.
HTTP Status Code는 크게 응답에 따라 1XX번대 부터 5XX번대로 나눠지고, 많은 작업을 수행하지 않고도 클라이언트에게 가능한 상세하고 많은 정보를 주는 것을 목적으로 하기 때문에 크게 보면 동일한 응답이더라도 보다 세분화하여 구분된다.
100번대 HTTP Status Code들은 정보를 제공하는 용도로 사용된다.
200번대 HTTP Status Code는 Request에 대해서 성공했다는 내용을 담은 코드들이다.
300번대 HTTP Status Code는 이전 주소로 요청을 하여 새로운 주소로 리다이렉션 해주기 위해 사용되는 코드들이다.
400번대 HTTP Status Code는 클라이언트 측의 Request 오류를 의미한다.
401 Unauthorized는 인증이 되지 않은 사용자, 403 Forbidden은 인증이 된 사용자지만 리소스 접근은 불가능한 사용자
500번대 HTTP Status Code는 서버 측의 오류를 의미한다. 서버 에러를 표현함으로 써 클라이언트가 자신의 Request에 대한 에러가 아님을 파악할 수 있다.
프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1 : https://joshua1988.github.io/web-development/http-part1/
10 분 안에 HTTP 상태 코드 배우기 : https://www.youtube.com/watch?v=wJa5CTIFj7U
HTTP 응답 코드 종류 && HTTP 메소드 종류 : https://gyrfalcon.tistory.com/entry/HTTP-응답-코드-종류-HTTP-메소드-종류
**HTTP란 무엇인가? :** https://velog.io/@surim014/HTTP란-무엇인가#status-code-상태-코드