CS

[CS] HTTP METHOD

pearhyunjin 2024. 1. 15. 19:52

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 모델의 최상위 계층

사용자가 상호 작용하는 소프트웨어 애플리케이션의 표면 바로 아래에서 발생하는 데이터 처리의 최상위 계층

애플리케이션 계층이라고 하지만 애플리케이션 자체의 사용자 인터페이스가 아닌 애플리케이션이 데이터를 표시하는 데 사용하는 기능과 서비스 제공

 

* 멱등성

여러 번 조회 요청해도 리소스 변동 없음

-> 여기서 멱등성은 그 내용이 같아야한다는 것이 아니라, 서버의 상태가 항상 같은것을 말한다.