멱등성

신연우·2021년 10월 7일
0

WIL

목록 보기
3/13

배경

기존 데이터를 업데이트 할 때 사용할 API의 개발을 맡게 되었습니다. 기존에 작성되어 있던 코드에서 업데이트 기능을 하는 API를 찾아봤습니다.

그런데 개중에 POST로 되어 있는 것과 PUT으로 되어 있는 것이 공존하고 있었습니다. 기존에 정해져 있는 규칙이 있을 것 같아 슬랙을 통해 여쭤봤습니다.

백엔드에서 API의 Http Method를 결정할 때 POST와 PUT을 결정하는 기준이 있을까요?

그 과정에서 멱등성에 대한 키워드를 처음 듣게 되어 따로 찾아보게 되었습니다.

멱등성이란?

동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다.
MDN

"같은 값을 반환"이 아닌 "같은 효과를 지닌, 서버의 상태도 동일" 이라는 표현을 쓴 이유는 케이스에 따라 HTTP status나 response의 결과값이 달라질 수 있기 때문인 것 같습니다. MDN 문서를 더 찾아보니 다음과 같은 추가 설명을 확인할 수 있었습니다.

멱등성을 따질 땐 서버의 백엔드 상태만 보면 되며, 각 요청에서 반환하는 응답 코드는 다를 수 있습니다.
MDN

중요한 이유

회사의 엔지니어분께서 멱등성을 보장하는 API와 멱등성을 보장하지 않는 API를 잘 구분해서 스펙을 작성해야 하는 중요성에 대해 설명을 해주셨습니다.

멱등성이 보장되는 API에 대해서는 타임아웃 이슈 등이 발생했을 때 클라이언트 측에서 retry를 진행해도 문제가 없기 때문입니다.

결론

그래서 보통 POST HTTP method는 멱등성을 보장하지 않을 때 사용하고, PUT HTTP method를 멱등성을 보장할 때 사용하는 것 같았습니다. 이번 작업에서는 멱등성을 보장할 수 있으므로 PUT HTTP method를 사용해 개발하기로 했습니다.

profile
남들과 함께하기 위해서는 혼자 나아갈 수 있는 힘이 있어야 한다.

0개의 댓글