멱등성이란?
동일한 요청을 한번 보내던 여러번 보내던 같은 결과를 가져야합니다.
따라서, POST, PATCH를 제외한 메서드는 멱등성이 보장되어야한다.
POST, PATCH는 왜 멱등성에 포함되지 않을까?
POST의 경우, 같은 POST요청을 여러번 진행할 경우 새로운 새로운 자원을 생성하게 됩니다. 그렇기 때문에 매번 서버의 상태가 변경되므로 멱등성에 포함되지 않습니다.
PATCH의 경우 의문이 들수 있습니다. PUT의 경우 멱등성을 보장하지만 PATCH는 왜 멱등성을 보장하지 않을까?
PUT의 경우에는 여러번 요청되도 똑같이 값을 덮어 쓰기 때문에 서버의 상태가 같습니다.
PATCH의 경우, 설계에 따라 멱등성을 보장할 수 도 없을 수도 있습니다. PUT처럼 해당 자원을 덮어쓰게 된다면, 멱등성을 보장할 수 있습니다. 다만, incr 1 같이 설계하게 된다면 멱등성을 보장 할 수 없습니다.
왜 멱등성을 지켜야 할까?
1. 안정성: 멱등성을 보장함으로써, 클라이언트가 중복 요청을 보내더라도 서버의 상태가 변하지 않고 동일한 결과를 얻을 수 있습니다.
2. 재시도: 네트워크 불안정, 서버 오류 등의 문제로 요청이 실패할 경우, 클라이언트는 동일한 요청을 안전하게 다시 시도 할 수 있습니다 .멱등성을 보장하지 않을 경우, 중복 요청으로 인한 데이터 충돌이나 오류가 발생할 수 있습니다.
3. 캐싱: 멱등성이 있는 요청은 결과를 캐싱하여 향후 동일한 요청에 대해 빠르게 응답할 수 있습니다.
4. 가독성: 멱등성을 지키는 것을 RESTful API 설계 원칙중 하나입니다. 이를 지키는것은 API 동작을 유추하기 쉽게 만들어 줍니다.