사실 생각해보면 비슷한 느낌이 강하다. 그러게 왜 따로 쓰지 이걸...? 하는 생각에 공부를 시작했다.
POST와 PUT
멱등성과 관련하여
POST와 PUT을 구분하기 위해서는 멱등성의 개념을 알아야 한다.
멱등성은 200억번 수행해도 결과가 같음을 의미한다.
HTTP Method에서 GET, PUT, DELETE는 같은 경로로 여러 번 호출해도 결과가 같다. 그러니 멱등적이다.
하지만 POST는 매 호출마다 새로운 데이터가 추가된다.
따라서, POST 연산은 결과가 멱등성을 지키지 않지만, PUT은 반복 수행해도 그 결과가 멱등적이다.
POST로 동일한 엔티티의 요청을 N번 보내면 N개의 다른 리소스들이 생성되는 것이다.
PUT으로 동일한 요청을 재시도 하더라도 동일한 결과 값을 받는다. 하지만 애초에 없는 것이라면 POST와 동일하게 자원을 생성함.
PUT과 PATCH
전체, 일부?
둘 다 수정 작업을 수행한다. 그런 점에선 똑같다고 볼 수 있다.
근데 사용할 때 아무 이유없이 둘 중 하나 골라서 사용해도 되면 애초에 개발자들이 하나만 만들었겠지 하는 생각에 공부한다.
둘의 차이점은 무엇일까 도대체.
우선 PUT은 전체 데이터를 입력받아 덮어 쓴다.
PATCH는 일부만 입력받고 일부만 수정한다.
예를 들어보자.
User라는 객체의 속성이 ID, PASSWORD, ADDRESS가 있다고 가정하자.
{
ID : soobinhand,
PASSWORD : 1234,
ADDRESS : Korea
} 라는 값을 가진 User가 있다고 가정하자.
만약 PUT 메소드로 ID를 soobinhand에서 soobin으로 바꿔보자.
PUT { ID : soobin } 으로 호출한다. 나머지 두 속성은 아무것도 해주지 않았다.
그러므로 데이터베이스에 저장이 되는 것은
{
ID : soobin,
PASSWORD : null,
ADDRESS : null
} 이 된다.
즉 모든 데이터가 덮어 써지기 때문에 입력하지 않은 값은 null로 바뀐다.
하지만 PATCH 메소드로 ID를 soobinhand에서 soobin으로 바꿔보자.
PATCH { ID : soobin } 으로 호출한다. 나머지 두 속성은 아까와 마찬가지로 아무것도 안해줌.
데이터베이스에 저장되는 것은
{
ID : soobin,
PASSWORD : 1234,
ADDRESS : Korea
} 로 저장된다.
즉 모든 엔티티 데이터를 넘겨주지 않아도 넘겨준 것만 골라서 바꿔준다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] GET과 POST 차이 (0) | 2022.01.25 |
---|---|
[네트워크] HTTP와 HTTPS의 차이 (0) | 2022.01.22 |
[네트워크] HTTP (0) | 2022.01.22 |
[네트워크] REST API (0) | 2021.12.01 |
댓글