inflearn logo
강의

講義

知識共有

すべての開発者のためのHTTP Webの基本知識

HTTPメソッドの属性

patch멱등성 관련 질문 2개입니다.

515

wcsjinn

投稿した質問数 34

1

"PUT의 경우와 PATCH의 경우가 애매하긴 합니다만, PUT은 예를들면 AGE=30으로 계속 반복 호출하는 것이라고 생각하시면 됩니다. AGE에 30을 할당하는 행위는 몇번을 반복해도 항상 AGE가 30일 것입니다. PATCH는 반면에 AGE = AGE+1 이라고 생각하시면 됩니다. 이것은 호출될때마다 AGE의 값이 바뀌게 되겠죠. 그래서 PUT은 멱등, PATCH는 멱등하지 않다라고 합니다."

1. 위 글은 다른 분 질문에 달린 답변의 일부입니다. 여기서 이해가 되지 않는 점이 PUT은 AGE = 30처럼 덮어쓰는 행위라고 생각하면 된다고 하셨는데 PUT도 AGE = AGE+1로 반복적으로 덮어쓸 수 있는것 아닌가요? 이렇게 된다면 put도 계속 리소스가 변경되는 것 같은데 왜 멱등한 것인지 이해가 명확히 되지 않습니다.

 

2. 그리고 safe와 멱등의 차이점은 단순히 한 번 호출과 여러번 호출했을때의 차이점인 것인지 아니면 요청의 결과가 같다는것에 초점을 맞춰야할지 헷갈립니다... 여러번 호출해도 데이터가 변하지않는다는게 멱등인 것인지 아니면 요청의 의도가 계속 같다는 것이 멱등인것인지 궁금합니다.

멱등성 network patch 멱등

回答 1

4

David

안녕하세요. wcsjinn님, 공식 서포터즈 David입니다.

1. 위 글은 다른 분 질문에 달린 답변의 일부입니다. 여기서 이해가 되지 않는 점이 PUT은 AGE = 30처럼 덮어쓰는 행위라고 생각하면 된다고 하셨는데 PUT도 AGE = AGE+1로 반복적으로 덮어쓸 수 있는것 아닌가요? 이렇게 된다면 put도 계속 리소스가 변경되는 것 같은데 왜 멱등한 것인지 이해가 명확히 되지 않습니다.

=> 동일한 요청에 대해 동일한 결과일 때 멱등하다고 말합니다.

PUT은 "덮어 쓰기"를 합니다.

age = 0 + 1을 요청하면 age = 1로 덮어써집니다.

age = 1 + 1을 요청하면 age = 2로 덮어써집니다.

주의할 점은 age = 0 + 1과 age = 1 + 2은 서로 다른 요청이라는 점입니다.

 

100번 age = 0 + 1을 요청하면 PUT은 100번 모두 age = 1을 응답합니다.

100번 age = 1 + 1을 요청하면 PUT은 100번 모두 age = 2을 응답합니다.

이런 경우 멱등하다고 표현합니다.

 

만약 동일한 요청을 매번했을 때 내부적으로 리소스가 변경된다면 서버쪽에서 해당 HTTP API를 잘못 구현했다고 볼 수 있습니다.

age = 0 + 1을 2번 요청했는데, 첫번째 응답에서는 age = 1이 되고, 두번째 응답에서는 age = 2가 되면 해당 HTTP API PUT요청을 잘못 구현한 것입니다.

 

PATCH의 경우는 아래 글 답변을 참고해주세요.

https://www.inflearn.com/questions/110644

 

 

2. 그리고 safe와 멱등의 차이점은 단순히 한 번 호출과 여러번 호출했을때의 차이점인 것인지 아니면 요청의 결과가 같다는것에 초점을 맞춰야할지 헷갈립니다... 여러번 호출해도 데이터가 변하지않는다는게 멱등인 것인지 아니면 요청의 의도가 계속 같다는 것이 멱등인것인지 궁금합니다.

=> 이 부분은 강의 내에서 자세히 설명하십니다.

safe는 호출했을 때 '리소스의 변경'이 발생하지 않는 것을 말합니다.

멱등은 동일한 요청에 대해 동일한 응답을 제공하는 것을 말합니다.

 

감사합니다.

PUT, PATCH method 관련 질문

0

710

2

PUT, PATCH 리소스에 대해서

0

351

1

HTTP 메서드의 속성 - 멱등

0

760

1

캐시 관련 질문입니다.

0

616

1

ETag 질문입니다.

0

727

1

캐시의 설정 주체

0

534

1

영속쿠키 질문입니다.

0

503

1

협상(accept-language)

0

686

1

에러 코드의 구현 주체

0

438

1

웹서버가 구현?

0

596

1

필수헤더?

1

560

1

Host와 Port

0

774

1

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

0

1259

1

표준 헤더와 임의 헤더

0

534

1

POST 등록 후 Location 헤더

0

569

1

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

1

1809

1

지속연결에 대해서.

0

692

1

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

0

593

1

캐시 내용중 no cache 일때

0

358

1

DNS 서버 관련 질문

1

748

1

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

0

662

1

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

0

847

1

캐시 무효화 질문드립니다

0

561

1

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

0

2596

1