HyperText Transer Protocol.
문서와 문서가 링크로 연결되도록 하는 태그로 구성된 언어인 HyperText 를 Transfer할 때 지켜야 하는 Protocole
Transfer 할 때 지켜야 할 Protocole 이므로 우선 Transfer 의 의미를 생각하보자. 웹이 동작할 때는 브라우저와 서버와 요청과 응답을 주고 받는다.
따라서 요청과 응답이 있어야 하고, 이를 주고 받을때 어떠한 형식을 지켜야 할 것이라고 예상할 수 있다.
어떤 요청이 들어왔을 때, 이에 대해 응답하면 그에 맞는 또 다른 요청이 들어올 수 있다.
그런데 새로 들어온 요청은 이전 요청에 대한 정보를 담고 있지 않는다. 각 <요청-응답>은 독립적으로 존재하며, 이를 Stateless (상태 없음) 이라고 한다.
요청과 응답은 특정한 형식을 지켜서 보내게 된다. 우선 요청의 구조를 살펴보자.
요청과 응답은 위의 그림처럼 각각 세 부분으로 이루어져 있다.
응답도 세 부분으로 이루어져 있다.
HTTP Request Methods 는 앞서 요청이 의도한 action이라고 적은 바 있다. HTTP 가 요청하는 주요 action 를 명료하게 정리해 둔 내용을 참고해서 정리해보았다.
Safe : 읽기 전용으로 실행하게 되는 method 는 안전하다고 할 수 있다. 읽기 전용으로 요청되었던 데이터는 응답 전 후로 변화가 없기 때문이다.
Idempotent — 멱등한;연산을 여러 번 적용하더라도 결괏값이 달라지지 않는
Idempotent 한 method 는 여러번 사용해도 서버 쪽에 문제가 생기지 않는다. 예를들어, DELETE method 는 idempotent method인데, 어떤 특정 데이터에 대해 여러번 실행해도 첫 번째 요청에 따라 한 번만 삭제할 수 있기 때문이다. 반면 POST method 는 idempotent method가 아닌데, POST 를 여러번 하게 되면, 또 다른 데이터를 만들기 때문이다.
The POST method is not idempotent:
POST /add_status -> Adds a status Change on Server side
POST /add_status -> Adds a 2nd status Change on Server side
POST /add_status -> Adds a 3rd status Change on Server side
The DELETE method is idempotent:
DELETE /delete?:id -> Returns 200 Change on Server side
DELETE /delete?:id -> Returns 404 No Change on Server side
DELETE /delete?:id -> Returns 404 No Change on Server side
Response Status Line 에 포함되는 Status Codes 를 한 마디로 정리한 표가 있어 가져와 보았다 껄껄.
200 OK 길만 걷게 해주세요..
출처 : https://levelup.gitconnected.com/the-simple-six-http-methods-eli15-edition-53f336b1ebd, https://developer.mozilla.org/en-US/docs/Web/HTTP/Status