인프런 커뮤니티 질문&답변

슈퍼맨~님의 프로필 이미지

작성한 질문수

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

HTTP 메서드의 속성

멱등

작성

·

415

·

수정됨

0

[질문 내용]
안녕하세요.ㅎ 좋은 수업 해주셔서 감사합니다.

POST 는 멱등이 아니라는데요, ( 결재가 두번됨 )

멱등의 필요성이 타임아웃등의 이유로 정상음답을 못주었을떄 같은 요청을 다시해도 판단 근거가 된다고 설명해주셨는데.

결제시 (POST) 시 정상 응답이 없으면,정상 응답이 없다는건 결제가 제대로 되지 않았다는 뜻이며 , 이경우 다시 같은 요청을 반복해도 되는거 아닌가요????

 

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 제2의 김영한님 🙂

결제시 POST 요청이 서버에 전달이 되었다고 가정해봅시다. 이때 서버는 결제를 완료했습니다. 그리고 클라이언트에 결제가 성공했다고 HTTP 응답 정보를 전달해야 합니다. 그런데 중간에 네트워크에 문제가 발생하거나 응답 정보를 모두 만들기 직전에 서버가 꺼진다면? 클라이언트는 제대로 정보를 받을 수 없겠지요?

이런 상황을 가정해보시면 됩니다.

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

제2의 김영한님, 질문해주셔서 감사드립니다.

질문하신 내용은 멱등성(Idempotence)과 관련하여 POST 요청, 특히 결제 과정에서의 두 번의 요청이 같은 결과를 가져야 하는 상황에 대한 것으로 보입니다. HTTP 메서드 중 POST는 기본적으로 멱등하다고 간주되지 않습니다. 멱등성에 대한 정의는 “동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질”을 말합니다.

결제 과정에서 동일한 POST 요청이 재요청될 경우 컨텍스트에 따라 다르게 처리될 수 있는데요, 일반적으로는 동일한 결제가 여러 번 이뤄지는 것을 방지하기 위해 결제 요청에 유니크한 ID나 토큰과 같은 값을 포함시켜 중복 결제를 방지합니다. 이를 통해 클라이언트의 각 요청을 구별하고, 서버 측에서는 동일한 ID의 요청이 이미 처리되었는지를 판단하여 멱등성을 유지할 수 있습니다.

이와 관련하여 유사한 질문에 대한 답변이 인프런에 존재하니 참고하시는 것도 도움이 될 것 같습니다.
- “POST 요청에 멱등성 적용에 대하여” - 이 질문에서는 클라이언트 사의 특수한 환경으로 인해 POST에도 멱등성을 보장해야 할 필요성에 대해 논의하고 있습니다. 답변에서는 클라이언트 요청의 Body 내용이 완전히 동일한 경우 여러 번 요청해도 동일한 응답을 반환하는 경우 POST 요청에 멱등성을 적용할 수 있다고 설명하고 있습니다.
- “결제 프로세스에서 장애가 날 경우” - 이 질문은 결제 요청이 전달되었지만, 타임아웃이나 서버 장애로 인해 중복 결제가 발생할 수 있음을 언급합니다. 여기서는 결제 요청 전에 중복 처리를 위한 키 값을 제공하는 방법으로 멱등성을 보장할 수 있는 방법을 제시하고 있습니다.

이러한 내용들은 결제 프로세스에서 멱등성을 보장하기 위해 고려해야 할 사항을 잘 설명하고 있으니, 멱등성에 대한 이해도를 높이시는 데 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.