HTTP는 Hypertext Transfer Protocol의 약자로 직역하자면 전송하는 프로토콜이라는 뜻인데 Hypertext를 전송한다는 뜻이다.
Hypertext는 예전에 텍스트 형식의 문서만 주고 받았기 때문에 저렇게 사용하였는데 요즘에는 Hypermedia로 보는게 더 맞지 않나 싶다. 텍스트파일이나 json 뿐만 아니라 mp3나 video나 다양한 미디어들도 HTTP를 통해 주고 받기 때문이다.
HTTP는 클라이언트가 서버에게 특정한 요청을 하게되고 서버는 클라이언트에게 응답을 보내주는 요청과 응답으로 이루어진 프로토콜이라고 볼 수 있다.
http를 사용하면 처음에 TCP Connection이 생김
요청이 끝나고 응답이 끝나면 TCP Connection이 닫힘
http는 암호화처리 안되어있음 ( 제3자가 가로챌 수 도 있음 )
https는 암호화처리 되어있어서 안전하게 데이터 주고 받을 수 있음
상태 코드라고 하며 3자리 숫자로 만들어져 있고, 첫번째 자리는 1에서 5까지 제공된다.
첫번째 자리가 4와 5인 경우는 정상적인 상황이 아니기 때문에 사이트 관리자가 즉시 알아야 하는 정보이다.
여기에 적힌 상태코드가 전부는 아니지만 대표적인 상태코드만 정리해보았다.
server에서 client 에게 응답 보낼 때 status codes 를 포함해서 보낸다. status codes는 http 표준에서 정의되어있고 약속이다.
1xx -> Informational
2xx -> successful
3xx -> Redirection
4xx -> client error
5xx -> server error ( 최대한 피하자... )
URL이란 사용자가 원하는 정보의 위치와 종류를 파악할 수 있도록 웹페이지의 정보 구조를 반영한 것이다. 리소스를 나타나낸 주소라고 생각하면 된다. URL은 프로토콜, 호스트(도메인,포트), 서브 디렉토리, 웹 페이지로 이루어져 있지만 대부분 웹사이트는 프로토콜, 도메인, 서브 디렉토리 정도만 표시된다.
Request Methods란 서버에서 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 메소드에 따라 서버에서 여러가지 작업을 수행하도록 만들어졌다. 주로 GET,POST 를 많이 사용하지만 종류에 대해 열거해보았다.
client가 server에게 변경하지 않는 요청으로는 GET,HEAD,OPTIONS,TRACE 가 있고 서버에 있는 데이터를 변경하는 요청은 POST, PUT, DELETE, PATCH 가 있다.
####Idempotent
HTTP Request Method를 살펴보다가 'Idempotent' 라는 단어를 보게 되었다.
Idempotent란 '동일한 요청을 여러번 했을 때 얼마나 빠르게했냐에 상관없이 항상 서버를 동일한 상태로 유지 할 수 있는가' 를 뜻한다.
request마다 이 Idempotent가 보장되는게 다르다. 대표적인 몇가지만 알아보겠다.
하지만 POST 요청은 다르다. POST 메소드가 호출될 때 마다 데이터베이스에 요청된 데이터가 추가될 것이고, 이는 Idempotent가 No 이다. 호출시 마다 서버의 상태가 달라지기 때문이다.