HTTP Method 종류

  • GET
  • POST
  • DELETE
  • PUT

 

GET 메소드와 POST 메소드

  • HTTP 프로토콜을 이용해서 서버에 데이터(요청 정보)를 전달할 때 사용하는 방식

 

GET 메소드 방식

  • 개념
    • 정보를 조회하기 위한 메소드
    • 서버에서 어떤 데이터를 가져와 보여주기 위한 메소드
    • 가져오는 것(Select)
  • 사용 방법
    • URL 끝에 '?'가 붙고, 요청 정보가 (key=value)형태의 쌍을 이루어 ?뒤에 붙여서 서버로 전송
    • 요청 정보가 여러개 일 경우 '&'로 구분
    • ex) 127.23.123.323?name1=value1&name2=value2
  • 특징
    • URL에 요청 정보를 붙여서 전송
    • URL에 요청 정보가 뒤에 붙기때문에 요청 길이에 대해 제한이 있어서 대용량의 데이터를 전송하기 어려움
      • 한 번 요청 시 전송 데이터(주소값 + 파라미터)의 양은 255자로 제한됩니다.(HTTP/1.1은 2048자) 
    • 요청 정보를 사용자가 쉽게 확인할 수 있음
      • 그렇기때문에 보안에 취약합니다.
    • HTTP 패킷의 body는 비어있는 상태로 전송
      • 즉, Body의 데이터 타입을 표현하는 'Content-Type' 필드도 HTTP Request Header에 들어가지 않음
    • POST 방식보다 빠름
      • GET방식은 캐싱을 사용할 수 있다. GET 요청과 그에 대한 응답이 브라우저에 의해 캐싱

 

 

POST 메소드 방식

  • 개념
    • 서버의 값이나 상태를 바꾸기 위한 용도의 메소드
    • 수행하는 것 (Insert, Update, Delete)
  • 사용 방법
    • 요청 정보를 HTTP 패킷의 body안에 숨겨서 서버로 전송
    • Form 태그를 이용하여 submit하는 형태
    • Request Header의 Content-Type에 해당 데이터 타입이 표현되며, 전송하고자하는 데이터의 타입을 적어줘야함
      • Default : application/octet-stream
      • 단순 텍스트의 경우 : text/plain
      • 파일의 경우 : multipart/form-date
  • 특징
    • Body안에 요청 하는 데이터를 숨겨서 전송하기 때문에 보안상 GET방식보다 안전하고, 대용량의 데이터를 전송할 수 있음
    • 클라이언트 쪽에서 데이터를 인코딩하여 서버로 전송하고, 이를 받은 서버쪽이 데이터를 디코딩

 

 

PUT 메소드 방식

  • 개념
    • 리소스를 생성 / 업데이트하기 위해 서버로 데이터를 보내는 데 사용
  • 사용 방법
    • POST 방식과 비슷하지만 이미 있는 값의 UPDATE를 할 때 사용하여 Idempotent합니다.
  • 특징
    • 여러 번 요청해도 동일한 결과입니다. (Idempotent, 멱등)
    • Body의 수정할 값을 넣어서 서버로 전송합니다.

 

 

DELETE 메소드 방식

  • 정의
    •  지정된 리소스를 삭제합니다.
  • 사용방법
    • GET과 비슷한 방식으로 URL에 삭제할 데이터를 파라미터에 추가하여 서버에 전송합니다.
  • 특징
    • Body에 삭제할 데이터를 넣는 것이 아닌 URL에 포함시켜 전송합니다.

 

 

 

 

Q. 조회하기위한 용도로 사용할 때 POST가 아닌 GET 방식을 사용하는 이유?

  1.  설계원칙에 따라 GET방식은 서버에게 여러번을 요청해도 동일한 응답이 돌아와야함.(Idempotent, 멱등)
    • GET방식은 가져오는 것(Select)로, 서버의 데이터나 상태를 변화시키지 않아야함.
      • ex) 게시판의 리스트, 게시글 보기 기능
      • 예외) 방문자의 로그 남기기, 글을 읽은 횟수 증가 기능
    • POST방식은 수행하는 것으로, 서버의 값이나 상태를 바꾸기 위한 용도
      • ex) 게시판의 글 쓰기 기능
  2. 웹에서 모든 리소스는 Link할 수 있는 URL을 가지고 있어야함.
    • 어떤 웹페이지를 보고 있을 때 다른 사람한테 그 주소를 주기 위해서 주소창의 URL을 복사해서 줄 수 있어야 함.
    • 즉, 어떤 웹페이지를 조회할 때 원하는 페이지로 바로 이동하거나 이동시키기 위해서는 해당 링크의 정보가 필요
    • 이때 POST 방식을 사용할 경우에 값(링크의 정보)이 Body에 있기 때문에 URL만 전달할 수 있으므로 GET 방식을 사용해야 함. 그러나 글을 저장하는 경우 URL을 사용할 필요가 없기때문에 POST 방식을 사용함.

 

'Network' 카테고리의 다른 글

[Network] REST와 RESTful  (0) 2021.10.22
[Network] 쿠키와 세션  (0) 2021.10.21
[Network] HTTP와 HTTPS  (0) 2021.10.21
[Network] 3-way-handshake와 4-way-hanshake  (0) 2021.10.17
[Network] TCP와 UDP  (0) 2021.10.17

+ Recent posts