개발의 편의성을 위해 현재 RESTFul API 서버는 GET, POST, DELETE 세가지만 존재한다.
그러나 개발자로서 왜 다른 메서드를 사용하지 않을까하는 의문점이 생겼고, HTTP 표준을 지키고 진정한 REST/RESTful API란 무엇인지 한발자국이라도 더 다가가기 위해 공부한 내용을 남긴다.
이번에 공부하면서 잊어버렸던 개념들도 많이 기억이 나게 되었다.
API개념을 바라보기전에 먼저 멱등성이란 개념을 알아야 한다.
멱등성이란 동일한 연산을 수행해도 서버의 상태와 자원의 결과가 달라지지 않는다,
쉽게 말하면 한번 요청한 결과와 여러번 요청한 결과가 동일하며 서버의 상태가 달라지지 않을때 멱등하다 혹은 멱등성을 가진다고 한다.
멱등성이 중요한 이유는 사용자가 결과값을 예측할 수 있고, 이에 따라 데이터 정합성과 무결성을 보장할 수 있기 때문이다.
예를 들어 자원1이 있고, 이 자원 1에 대해 삭제요청을 했다고 하자.
그러면, 자원1은 삭제되었다.
그 후 여러번 보내면 자원1은 삭제된 상태로 그대로 상태가 유지된다. 자원1은 삭제된 상태이므로 아무일도 일어나지 않는다.
사용자와 우리는 이 결과를 예측할 수 있다.
이것이 멱등성이다.
HTTP표준을 준수하고 요청에 맞는 API를 디자인하면 URI에 자원에 대한 상태요청을 명기하지 않고도, 자원의 상태 그대로를 통해 간결한 처리를 진행할 수 있다.
개발표준을 준수하지 못한다는 위험성을 제거한 상태에서 잘 디자인된 API는 더 간결하고, 명확하고 수행할 수 있는 처리 폭이 넓어질 수 있다.
물론 개발자의 협의, 생각보다 깊은 협의가 필요하겠지만 단순한 API 디자인보다는 여러모로 효율성이 좋을 것 같다.
API디자인/POST-PUT-PATCH - https://docs.tosspayments.com/blog/rest-api-post-put-patch
멱등성 - https://f-lab.kr/insight/understanding-idempotency-in-api-design