작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
762
1
안녕하세요. 개발자님.
HTTP 메서드의 속성 중 안전은 몇번을 실행하던 관계 없이
리소스가 변하지 않는 것, 멱등은 몇번을 실행하던 결과가
같아야 한다는 것, 캐시가능은 캐시해서 사용해도 되는
여부라고 강의에서 들었습니다.
그런데 멱등의 경우 '멱등하다'라는게 GET, PUT, DELETE
만 적용이 된다고 하셨습니다. POST와 PATCH는 안된다고
하셨는데, 이 부분이 이해가 가지 않습니다.
GET은 조회니 당연히 결과가 같을 것입니다. 하지만 PUT의
경우 아래 질문 글의 PATCH와 같이 + 10을 하는 것으로
구현한다면 계속 + 10된 값으로 덮어 씌워지니까 전체가
덮어씌워지는지, 일부만 수정되는지의 차이이지 동일
실행에 같은 값이 나온다고 말할 수 없는 것 같아서 이해가
가지 않습니다. PUT이 어떻게 멱등하고 PATCH는 멱등하지
않은지 궁금합니다. DELETE의 경우 삭제니까 수행 횟수에
상관 없이 결과는 같을거라고 예상이 됩니다. 비슷한
맥락으로 비교 대상은 없지만 POST가 멱등하지 않은
이유도 잘 이해가 가지 않아서 질문 남깁니다.
감사합니다. 좋은하루 보내시길 바랍니다!
답변 1
0
안녕하세요. 유진이 님, 공식 서포터즈 codesweaver 입니다.
.
일반적으로 POST의 경우 같은 데이터를 계속해서 POST로 전송하게 될경우 서버에서 새로운 리소스를 생성하게 됩니다.(아이디를 새로 발급) 그래서 멱등하지 않다고 보는 것입니다.
.
PUT의 경우와 PATCH의 경우가 애매하긴 합니다만, PUT은 예를들면 AGE=30으로 계속 반복 호출하는 것이라고 생각하시면 됩니다. AGE에 30을 할당하는 행위는 몇번을 반복해도 항상 AGE가 30일 것입니다. PATCH는 반면에 AGE = AGE+1 이라고 생각하시면 됩니다. 이것은 호출될때마다 AGE의 값이 바뀌게 되겠죠. 그래서 PUT은 멱등, PATCH는 멱등하지 않다라고 합니다.
.
웹에서 정의하고 있는 멱등이 항상 명확하게 드러나는것은 아닙니다. 가령 게시물을 조회(GET)할 경우에도 게시물의 조회카운트는 증가할 수 있습니다. 이것을 리소스의 변경이 일어난것으로 간주할것인가 아닌가에 따라 GET도 멱등하다/아니다 라고 나뉠 수 있습니다.
.
멱등과 관련한 유사한 질문 링크를 남기오니 해당 질문도 한번 살펴보시기 바랍니다.
get으로 게시판의 글 조회수가 올라가게 된다면 멱등성을 위반할 수 있지않나요?? - 인프런 | 질문 & 답변 (inflearn.com)
.
감사합니다.
고맙습니다. Post의 경우 반복 전송 시 새로운 리소스를 생성하게 되기 때문에 멱등이라는
말씀이시군요. 근데 PUT과 PATCH는 보여주신 예시처럼 AGE=30, AGE=AGE+1로 밖에
설계 할 수 없는 건가요? 저는 동일 조건 설계 시 PUT과 PATCH는 둘다 멱등을 지키지 못하는거
같다라고 생각이 들었거든요. 아직 경험해보지 못해서 모호한 것일수도 있지만, PUT을
AGE=AGE+1 로직으로 값을 넣어준다면 덮어씌워지는 것 뿐이지 값은 계속 변경되는게
아닐까 의문이 남습니다. 고맙습니다.