inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모든 개발자를 위한 HTTP 웹 기본 지식

HTTP 메서드의 속성

멱등이 잘 이해가 가지 않습니다.

828

작성자 없음

작성한 질문수 0

1

안녕하세요. 개발자님.

HTTP 메서드의 속성 중 안전은 몇번을 실행하던 관계 없이

리소스가 변하지 않는 것, 멱등은 몇번을 실행하던 결과가

같아야 한다는 것, 캐시가능은 캐시해서 사용해도 되는

여부라고 강의에서 들었습니다.

그런데 멱등의 경우 '멱등하다'라는게 GET, PUT, DELETE

만 적용이 된다고 하셨습니다. POST와 PATCH는 안된다고

하셨는데, 이 부분이 이해가 가지 않습니다.

GET은 조회니 당연히 결과가 같을 것입니다. 하지만 PUT의

경우 아래 질문 글의 PATCH와 같이 + 10을 하는 것으로

구현한다면 계속 + 10된 값으로 덮어 씌워지니까 전체가

덮어씌워지는지, 일부만 수정되는지의 차이이지 동일

실행에 같은 값이 나온다고 말할 수 없는 것 같아서 이해가

가지 않습니다. PUT이 어떻게 멱등하고 PATCH는 멱등하지

않은지 궁금합니다. DELETE의 경우 삭제니까 수행 횟수에

상관 없이 결과는 같을거라고 예상이 됩니다. 비슷한 

맥락으로 비교 대상은 없지만 POST가 멱등하지 않은

이유도 잘 이해가 가지 않아서 질문 남깁니다.

감사합니다. 좋은하루 보내시길 바랍니다!

network

답변 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)

.

감사합니다.

0

유진이

고맙습니다. Post의 경우 반복 전송 시 새로운 리소스를 생성하게 되기 때문에 멱등이라는 

말씀이시군요. 근데 PUT과 PATCH는 보여주신 예시처럼 AGE=30, AGE=AGE+1로 밖에

설계 할 수 없는 건가요? 저는 동일 조건 설계 시 PUT과 PATCH는 둘다 멱등을 지키지 못하는거

같다라고 생각이 들었거든요. 아직 경험해보지 못해서 모호한 것일수도 있지만, PUT을

AGE=AGE+1 로직으로 값을 넣어준다면 덮어씌워지는 것 뿐이지 값은 계속 변경되는게

아닐까 의문이 남습니다. 고맙습니다.

캐시 관련 질문입니다.

0

623

1

ETag 질문입니다.

0

734

1

캐시의 설정 주체

0

536

1

영속쿠키 질문입니다.

0

509

1

협상(accept-language)

0

691

1

에러 코드의 구현 주체

0

442

1

웹서버가 구현?

0

598

1

필수헤더?

1

563

1

Host와 Port

0

779

1

다른 도메인이 같은 포트를 사용하는 경우

0

1265

1

표준 헤더와 임의 헤더

0

537

1

POST 등록 후 Location 헤더

0

574

1

프로세스의 상태가 변경되는 경우에 Post 사용

1

1813

1

지속연결에 대해서.

0

696

1

제가 아는 쿼리 파라미터 개념이 맞는지 확인 부탁드립니다.

0

596

1

캐시 내용중 no cache 일때

0

364

1

DNS 서버 관련 질문

1

753

1

캐시로 저장된 파일의 유효기간은 얼마나 되나요?

0

665

1

웹브라우저 요청흐름 질문입니다.

0

852

1

캐시 무효화 질문드립니다

0

564

1

리다이렉트와 리다이렉션 차이?

0

2621

1

쿠키 및 세션 관련 질문드립니다

0

590

1

HTTP 메서드 ( HTTP 메서드의 속성 파트 ) 강의의 멱등 내용에 대하여 질문드립니다.

0

1652

1

header 나 gzip으로 데이터 보낼떄 데이터는 base64로 인코딩되서 가는 건가요?

0

482

1