
클라이언트와 서버가 통신하는 것을 담당하는 프로토콜을 HTTP 라고 하며 요청/응답 모델에서 주고받는 것을 HTTP 메시지라고 한다. HTTP 메시지는 요청인지, 응답인지에 따라 구조가 다르다.

요청 메소드의 종류는 총 9개로, 그 중 주요 메서드는 GET, POST, PUT, PATCH, DELETE이다.
GET과 POST는 클라이언트의 요청의 목적을 드러내는 것으로
1. 멱등성 : GET은 멱등성을 가지고 POST는 멱등성을 가지지 않는다
멱등성이란 몇 번을 서버에 요청해도 자원이 바뀌지 않는 성질을 말한다. GET은 자원의 존재 유무만 체크하고 그에 맞는 응답만을 받으면 되기 때문에 멱등성을 보장받을 수 있다. POST는 데이터를 서버에 전송해서 특정 작업을 처리하기에 서버에서의 결과가 POST 요청마다 달라질 수 있다. 그래서 멱등성을 완전히 보장한다고 할 수 없다.
2. 데이터가 어디에 실리는가?
GET은 HTTP의 헤더에 데이터가 드러나 보안에 취약하다.
POST는 HTTP 헤더가 아닌 바디에 데이터를 실어 보내기 때문에 데이터가 외적으로 드러나지 않는다.
3. 데이터의 양
GET은 서버에 자원을 위한 키워드를 보내거나 경로와 관련된 정보를 전송하면 된다.
POST는 서버에서 작업하는데 필요한 데이터들을 보내줘야 하기 때문에 상대적으로 보내야 하는 데이터가 많다.
멱등성 : PUT은 멱등성이 보장되고, PATCH는 멱등성이 보장되지 않는다
PUT은 지정한 데이터를 전부 수행하는 method이고, PATCH는 정보의 일부만 변경하는 method를 말한다. 그래서 PUT은 멱등하지만 PATCH는 멱등하지 않다.

클라이언트가 서버에게 요청을 보낼 때 요청 결과 (응답)이 어떻게 되었는지 알려주는 코드
클라이언트에게 요청이 들어오면 서버가 요청에 대한 수행 결과를 응답 메세지를 통해 보내준다. 그런데 HTTP 통신 과정에서 클라이언트 측, 서버 측, 혹은 양쪽 모두 문제가 발생할 수 있기에 통신이 잘 이루어지고 있는지 통신 상태를 감시하는게 중요하다. 이에 상태코드가 필요한데, 상태코드란 클라이언트가 보낸 HTTP 요청에 대한 서버의 응답 코드로 상태 코드에 따라 요청의 성공/실패 여부를 판단한다.
상태 코드의 종류에는 총 5개의 클래스가 존재한다
[정보] 주식과 같이 실시간으로 데이터를 받아야하는 통신 응답을 말한다.
[성공] 클라이언트가 요청한 작업을 서버가 성공적으로 처리했음을 의미한다.
[리다이렉션] 요청을 완료하기 위해 재전송이 필요하다.
[클라이언트 오류] 클라이언트 측에 오류가 있음을 의미
4XX는 클라이언트와 관련된 것이기 때문에 세부적인 상태 코드들이 중요하다.
[서버 오류] 클라이언트의 요청은 정상적이지만 서버가 요청을 수행하지 못했음을 의미함
데이터의 핵심 정보를 담는 역할

요청 메시지에서도, 응답 메시지에서도 헤더가 있었는데 헤더의 역할은 무엇일까? HTTP 헤더란 데이터의 핵심 정보를 담는 역할을 하며, 헤더명:헤더값 의 형식을 띈다.
HTTP 헤더의 종류에는 공통헤더, 요청헤더, 응답헤더, 엔티티헤더 총 네 개가 있다
공통헤더
요청헤더
응답헤더
엔티티헤더
https://hahahoho5915.tistory.com/62
https://murphymoon.tistory.com/entry/HTTP%EC%9D%98-GET%EA%B3%BC-POST-%EB%A9%94%EC%84%9C%EB%93%9C-%EB%B9%84%EA%B5%90-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B81
https://jhbljs92.tistory.com/entry/3-HTTP-Method