CS Study/네트워크

HTTP 메소드

danalee252 2022. 3. 14. 10:41

GET

  • 리소스를 조회할 때 사용한다.
  • 쿼리를 통해 데이터를 전달한다. (브라우저에 따라 길이 제한이 있다.)
  • 캐시 사용이 가능하다. -> 똑같은 메소드를 다시 호출했을 때, 캐시가 다시 로드하여 보여준다.
  • 호출 url이 모두 노출되므로 보안 취약하다.
  • ex) http://{Base URL}?id=123&fruit=사과

POST

  • 리소스를 새로 등록할 때 사용한다.
  • 메시지 바디를 통해 데이터를 전달한다. (길이 제한이 없다.)
  • 데이터를 파라미터로 전달하진 않지만 메시지 바디도 다 볼 수 있기 때문에 암호화하지 않으면 보안에 취약하다.

PUT

  • 리소스를 수정할 때 사용한다.
  • POST와 다르게 리소스의 위치를 알고 URI를 지정해 주어야 한다.
  • 지정한 URI에 리소스가 존재하지 않는다면 새로 생성하고, 존재한다면 덮어쓰기한다.
  • 리소스 전체를 수정하므로, 모든 필드를 지정해 주어야 한다.

PATCH

  • 리소스를 수정할 때 사용한다.
  • PUT과 다르게 리소스를 부분 수정할 때 사용한다. 따라서 수정할 필드만 지정해도 된다.

POST와 PUT의 차이

POST는 지정한 URI 아래에 새로운 리소스를 생성하지만, PUT은 리소스의 위치를 알고 URI로 지정해 주어야 한다.

POST의 경우, /fruits 라고 요청하면 fruits 아래에 새로운 리소스를 생성한다.

PUT의 경우, /fruits/15 라고 요청하면 15번 데이터를 수정하거나 존재하지 않는다면 새로 생성한다.

PUT과 PATCH의 차이

"fruit"과 "price"를 필드로 갖는 엔티티가 있다고 하자. 그 중 하나의 데이터가 다음과 같다.

"name" : "apple"
"price" : 1500

 

이 데이터를 수정하려고 할 때, PUT으로 요청하는 경우, 모든 필드의 값을 지정하지 않으면, 기존의 데이터가 날라가는 무서운 상황이 일어날 수 있다.

요청 결과
"price" : 2000 "name" : null
"price" : 2000

 

따라서, PUT으로 요청하려면 다음과 같이 해야 한다.

요청 결과
"name" : "apple"
"price" : 2000
"name" : "apple"
"price" : 2000

 

이렇게 일부 필드만 수정하고 싶은 경우, 사용하기 적절한 메소드는 PATCH이다.

요청 결과
"price" : 2000 "name" : "apple"
"price" : 2000

 

'CS Study > 네트워크' 카테고리의 다른 글

웹 동작 방식  (0) 2022.04.19
쿠키, 세션, 캐시  (0) 2022.04.15
CORS란 + 스프링부트에서 CORS 에러 해결하기  (0) 2022.04.06
HTTP와 HTTPS의 차이  (0) 2022.03.23
OSI 7계층  (0) 2022.03.07