1 minute read

HTTP

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. -MDN-

HTTP 정의

HTTP 역사

HTTP/0.9 -> GET 방식지원 (데이터 검색만 하던 시절)

HTTP/1.0 -> GET/POST 방식만을 지원

HTTP/1.1 -> PUT,DELETE 및 PATCH 지원

HTTP 특징

  1. Client-Server 구조
  2. Conectionless(비연결성)
  3. Stateless(무상태)

GET

정의: 서버에서 리소스를 조회하는데 사용되는 HTTP 방식

   http://www.example.com/search?query=java

다음과 같이 물음표(?) 뒤에 query=java 와 같이 파라미터를 붙여 서버로 요청하면 서버는 요청에 응답 한다.

POST

정의: 서버에 데이터를 보내는데 사용되는 HTTP 방식

예) 클라이언트에서 리소스를 body 태그에 담아 서버로요청하면 서버에선 리소스를 생성한다.

요청 데이터를 어떻게 처리한다는 뜻일까?

스펙: POST 메서드는 대상 리소스가 리소스의 고유한 의미 체계에 따라 요청에 포함 된 표현을 처리하도록 요청

  1. 새 리소스 생성(등록)
    • 서버가 아직 식별하지 않은 새 리소스 생성
  2. 요청 데이터처리
    • 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야하는 경우

    예) 주문에서 결제 완료 -> 배달시작 -> 배달 완료

  • 데이터 처리 예시: 회원가입/상품주문, 게시판/뉴스/댓글, 신규주문 생성
  1. 다른 메서드 대신 사용
    • Delete,Put,Patch

GET vs POST

  • idempotent(멱등성)

      '연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질' 
    

    Idempotent는 여러 번 적용해도 결과가 변경되지 않는 작업의 속성을 나타낸다. 예를 들어 HTTP GET 메서드는 URL로 식별되는 지정된 리소스에서 데이터를 검색하고 동일한 URL이 요청될 때마다 동일한 응답을 반환한다. 반면 POST 메서드는 동일한 리소스에 대해 여러 요청이 있을 때 항상 동일한 결과를 생성하지 않을 수 있다.

  • 캐시

    GET 요청은 캐시를 사용하여 서버로부터 데이터 로딩 속도를 줄일 수 있다.

  • 데이터 길이

    GET 방식은 매개변수를 URL로 전송하기때문에 한 번의 요청으로 보낼 수 있는 데이터 양이 정해져있습니다. POST 방식은 요청 본문에 데이터를 전송하므로 데이터 길이에 제한이 없다.

  • 북마크

    GET은 URL의 요청 파라미터가 인코딩 되기때문에 북마크 설정이 가능하다. POST는 요청을 본문에 포함하기때문에 북마크 설정이 불가능하다.

  • 요청성공

    GET은 요청이 성공될때까지 연결을 요청한다.

    예) 인터넷이 연결되지않을때 요청하면 결과값을 받을 수 없다가 연결이 됐을시 페이지 새로고침이일어난다

    POST요청은 데이터 변경이 중복문제로 이어질 수 있으니 한번만 요청한다.

궁금증

Q. HTML 의 <form>태그 메서드 지원

GET,POST 방식의 차이점에대해 검색하다가 HTML의 <form> 태그에는 get 방식과 post 방식만이 존재하는 데 이유가 궁금해서 검색해보았다. 이유는 이러하다 초기 HTTP버전인 HTTP/1.0 에선 GET/POST 방식만을 지원해왔다. 이후 HTTP/1.1 버전부터 DELTE,PUT,PATCH와 같은 메소드를 지원하기 시작했다고한다.

출처: 인프런 -HTTP 기초 [김영한]

Categories:

Updated: