HTTP란 무엇인가?
HyperText Transfer Protocol의 약자로서 HTML과 같은 하이퍼 미디어를 리소스를 전송하기 위한 응용계층 프로토콜
HTTP의 특징
1. 클라이언트 - 서버 프로토콜
- 리소스를 제공하는 쪽이 서버, 리소스를 제공 받는 쪽이 클라이언트로 클라이언트와 서버의 역할을 명확히 구분
- 클라이언트로 부터 요청이 송신되고 그 결과가 서버로 부터 응담되어 돌아오는 요청 - 응답의 구조, 따라서 요청없이 응답이 발생하는 경우는 없다.
2. 무상태 프로토콜
- 클라이언트 서버간 요청에 대하여 어따한 데이터로 유지, 기억하지 않음을 의미
- 각각의 요청을 이전요청과 독립적인 트랜잭션으로 취급
- 웹 기술의 진보에따라 상태를 기억하는 것을 보완하기 위해 쿠키, 세션 기술이 둥장
3. URI를 이용한 리소스의 식별
- Uniform Resource Identifiers 를 통한 인터넷상의 리소스의 위치를 호출
- 클라이언트가 요청을 보낼떄마다 URI가 반드시 포함
4. HTTP 메서드로 서버에 임무 부여
- 요청 시에 서버가 주어진 리소스에 수행하기 원하는 행동을 규정 및 요구
- 가져올 리소스의 내용은 지정된 리소스를 서버가 해석한 결과
- 대표적으로 GET, POST, PUT, DELETE, PATCH 들이 존재 (이외에도 OPTION, TRACE 등이 있다.)
5. 메시지를 통한 정보의 교환
- 헤더와 바디로 구분되는 메세지를 통해 정보를 교환
- 클라이언트와 서버가 처리 지침등의 정보가 대부분 헤더에 담겨있다.
HTTP 요청 메서드
- 클라이언트가 서버가 주어진 리소스에 수행하기 원하는 행동을 요청시에 담은 동사
GET
- URI로 식별된 리소스를 요청하는 메서드로서 해당 리소스를 서버가 해석한 결과를 반환
POST
- 특정 리소스에 엔티티를 전송할떄 사용하는 메서드
- 요청 헤본무의 유형은 Content-Type 헤더로 표시
PUT
- 요청에 포함된 엔티티를 리퀘스트 URI에 보존하기를 원하는 메서드
- 요청 리소스의 모든 현재 표시를 요청 payload로 변환
DELETE
- 요청 URI에 해당하는 리소스의 삭제를 요구하는 메서드
PATCH
- 요청 리소스의 부분만을 수정하는데 사용하는 메서드
POST vs PATCH vs PUT
멱등성 - 한벙 수행하나 여러번 수행하나 같은 결과를 나타낸다면 멱등성이 있는 것, 즉 부수효과가 없음을 의미
put은 멱등성이 있으나 post와 patch는 멱등성이 존재하지 않는다.
post- 리소스에 페이로드를 추가
put- 리소스를 페이로드로 교체
patch - 리소스에 페이로드에 해당하는 부분을 수정
HTTP 응답 상태 코드
HTTP 응답이 성공적으로 이루어졌는지 나타내는 코드로서 5개의 그룹으로 구분
- 100 ~ 199 (정보 제공 응답)
- 200 ~ 299 (성공 응답)
- 300 ~ 399 (리다이렉트 응답)
- 400 ~ 499 (클라이언트 에러 응답)
- 500 ~ 599 (서버 에러 응답)