[CS] HTTP METHOD
HTTP : Hyper Text Transfer Protocol
네트워크 장치 간에 정보를 전송하도록 설계된 애플리케이션 계층 프로토콜.
HTTP를 통한 일반적인 흐름인 클라이언트 시스템에서 서버에 요청한 다음 서버에서 응답 메시지를 보내는 작업.
HTTP METHOD
클라이언트 - 서버 구조에서 요청과 응답이 이루어지는 방식. 즉, 서버가 수행해야 할 동작을 지정하여 요청 보내는 방법
리소스와 동작을 분리하기 위해서 사용(HTTP METHOD를 통해 서버가 수앵할 동작 지정, URI는 리소스만 식별)
GET : 리소스 조회 POST : 데이터 추가, 등록 PUT : 리소스 대체, 수정 또는 해당 리소스 없을시 새로 생성 DELETE : 리소스 삭제 PATCH : 리소스 부분 변경 HEAD : GET과 동일하지만 HTTP 메세지의 body 제외하고 조회 OPTIONS : 서버와 브라우저가 통신하기 위한 통신 옵션을 확인하기 위함 CONNECT : 대상 자원으로 식별되는 서버에 대한 연결 요청 |
- GET
리소스 조회용 메서드 ex) URL입력, 링크 클릭 등
멱등성
GET 요청에서 서버에 데이터를 전달할 때 쿼리스트링을 통해 전달 ex) 검색어 입력시 URL 마지막에 query=검색어 입력됨 - POST
새로운 리소스 생성 메서드
성공적으로 생성 완료하면 201 HTTP 응답 반환
데이터를 메세지 바디에 쿼리 파랄미터 형식으로 전달 -> key-value형식의 쿼리 파라미터
+) GET vs. POST
POST 방식은 데이터 외부 노출이 없어 GET 방식에 비해서 보안성 높다
POST 방식은 멱등성을 지니지 않아 POST 메서드 여러 번 수행시 같은 결과값 보장할 수 없다.
GET 방식은 캐싱을 이용하므로, POST 방식에 비해 조회 속도가 빠르다
- PUT
리소스 완전 대체 메서드 (덮어쓰기)
클라이언트가 리소스 식별할 수 있음 -> 클라이언트가 구체적인 리소스 위치를 아는 상태에서 URI 지정
수정 불가능, 멱등성 존재 - DELETE
리소스 수정 메서드
멱등성 존재 - PATCH
PUT과 같이 수정하는 역할이지만 부분 변경해준다는 차이점 존재
멱등성 존재할수도 안할수도 있다. (부분/전체 수정이기 때문에)
PATCH 지원하지 않는 서버의 경우 POST 사용
HTTP 요청
웹 브라우저와 같은 인터넷 통신 플랫폼에서 웹 사이트를 로드하는 데 필요한 정보를 요청하는 방법
HTTP 버전 유형 / URL / HTTP 메서드 / HTTP 요청 헤더 / 선택 사항인 HTTP 본문
위의 각 방식을 통해서로 다른 유형의 정보를 포함하는 일련의 인코딩된 데이터를 전달.
- HTTP 요청 헤더
HTTP 헤더에는 키값 쌍에 저장된 텍스트 정보가 포함되어 있으며 헤더는 모든 HTTP 요청에 포함됨.
헤더는 클라이언트가 사용하는 브라우저 및 요청되는 데이터와 같은 핵심 정보 전달. - HTTP 요청 본문
HTTP 요청 본문은 요청에서 전송되는 정보의 본문을 포함.
HTTP 요청의 본문에는 사용자 이름 및 비밀번호 또는 양식에 입력된 기타 데이터와 같이 웹 서버에 제출되는 모든 정보 포함.
HTTP 응답
웹 클라이언트에서 HTTP 요청에 대한 응답으로 인터넷 서버로부터 수신하는 응답
HTTP 요청에서 요청된 내용을 기반으로 중요한 정보 전달
HTTP 상태 코드 / HTTP 응답 헤더 / HTTP 본문 (선택 사항) 총 3가지가 포함된다.
- HTTP 상태 코드
HTTP 요청이 성공적으로 완료되었는지 여부를 나타내는 3자리 코드 (XX : 00 ~ 99)
- 1XX : Informational
- 2XX : 성공
- 3XX : 리디렉션
- 4XX : 클라이언트 오류
- 5XX : Server Error - HTTP 응답 헤더
응답 본문에서 전송되는 데이터의 언어 및 형식과 같은 중요한 정보 전달 헤더 - HTTP 응답 본문
'GET' 요청에 대한 성공적인 HTTP 응답에는 일반적으로 요청된 정보가 포함된 본문이 존재.
대부분의 웹 요청의 경우 이는 웹 브라우저에서 웹 페이지로 변환되는 HTML 데이터
* 애플리케이션 계층
= 계층 7 = 인터넷의 7계층 OSI 모델의 최상위 계층
사용자가 상호 작용하는 소프트웨어 애플리케이션의 표면 바로 아래에서 발생하는 데이터 처리의 최상위 계층
애플리케이션 계층이라고 하지만 애플리케이션 자체의 사용자 인터페이스가 아닌 애플리케이션이 데이터를 표시하는 데 사용하는 기능과 서비스 제공
* 멱등성
여러 번 조회 요청해도 리소스 변동 없음
-> 여기서 멱등성은 그 내용이 같아야한다는 것이 아니라, 서버의 상태가 항상 같은것을 말한다.