Knowledge/이론

HTTP GET / POST /PUT 차이

똑똑한망치 2024. 2. 20. 19:42
728x90
반응형

1. HTTP GET


GET은 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다.

일반적으로 서버에서 정보를 조회할 때 사용한다.

HTTP GET 방식은 요청에 필요한 데이터를 URL 에 붙여서 전송한다. 이를 쿼리 스트링(query String)이라고 부른다.

방식은 URL 끝에 "?" 을 붙이고 그 뒤에 "변수명1=값1&변수명2=값2" 형식으로 이어 붙인다.

 

 

(1) GET 의 특징

  • GET 요청은 캐시가 가능하다.
  • GET 요청은 브라우저 히스토리에 남는다.
  • GET 요청은 북마크가 될 수 있다.
  • GET 요청은 길이 제한이 있다.
    • 표준은 없으나 브라우저마다 제한이 다르다.
  • GET 요청은 중요한 정보를 다루면 안된다. 
    • URL에 데이터를 붙여 전송하기 때문에 모두 노출된다.
  • GET 은 데이터를 요청할때만 사용된다.

 

 

 

 

2. HTTP POST


POST는 서버에 정보를 입력하거나 추가할 때 사용한다. 

POST는 전송할 데이터를 HTTP request의 body부분에 담아 전송한다. body 타입은 Content-Type 헤더에 따라 결정된다.

POST로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용한다.

 

 

(1) POST 의 특징

  • POST Request 는 Idempotent(멱등) 하지 않다.
    • POST로 동일한 entity의 Request를 N번 보낸다면 N개의 다른 Resource 들이 생성되는 것이다.

 

 

 

3. HTTP GET 과 POST의 차이점


  • 사용 목적 
    • GET은 서버에서 정보를 조회할 때 사용하고, POST는 서버에 정보를 입력하거나 추가할 때 사용한다.
  • 요청에 body 유무
    • GET 은 URL파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP메시지에 body가 없다.
    • POST는 body에 데이터를 담아 보내기 때문에 HTTP body 가 존재한다.
  • 멱등성(idempotent)
    • GET 은 멱등이며, POST 는 멱등이 아니다.
    • GET 은 여러 번 요청해도 응답이 동일하다.
    • POST는 N개의 생성 요청에 N개의 resource 가 생성된다. 따라서 멱등이 아니다.

 

※ 멱등이란

연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.

 

 

 

 


 

 

 

 

4. HTTP PUT


POST는 서버에 정보를 입력(생성)하거나 업데이트(갱신)할 때 사용한다.

Resource가 존재한다면, 데이터를 Update(갱신)한다. 

Resource가 존재하지 않는다면, 데이터를 Create(생성) 한다.

 

 

 

(1) PUT의 특징

  • Resource Identifier
    • 예를 들어) /shoes/{shoe_id} 처럼 해당 resource의 Resource Identifier를 나타내줘야 한다.
  • PUT Request는 Idempotent(멱등) 하다.
    • PUT request로는 새로운 정보가 계속되서 생성되지 않는다. 여러번 재시도를 하더라도, 업데이트를 하지 생성되지 않아 동일한 결과값을 받는다. 즉 , 멱등하다.

 

 

 

 


 

 

 

5. HTTP POST과 PUT의 차이점


POST의 경우 요청 URI에 /Collection URI 까지만 포함이 되지만,

PUT의 경우 Collection URI/{Resource Identifier}가 포함되어야 한다.

 

요청 값의 결과로 POST는 멱등하지 않은 , 각 요청마다 새로운 결과값을 제공하지만,

PUT의 경우 멱등한 같은 결과 값을 제공한다.

반응형