HTTP는 위의 속성들이 있다. 멱등은 처음 들어본 단어였는데
김영한 강사님께서 강의해주신 내용을 바탕으로 이해한 바를 설명해보겠다.
아래 표는 강의에서 위키피디아를 보고 참고하신 내용을 유사하게 정리하였다.
즉, 호출했을 때 리소스의 변경이 일어나지 않는 것(GET, HEAD)가 있다.
안전은 단순히 리소스가 변하는지 변하지 않는지만을 고려한다.
그러므로 계속해서 GET을 했을 때 서버에 장애가 생길 수 있으니 불안전하지 않을까요?
라는 질문은 메서드 속성 안전(Safe)에서 어긋나는 질문이다.
위의 공식으로 모든 설명이 끝난다. 1번 호출해도 2번 연달아 호출해도 결과가 똑같다.
멱등 메서드
- GET, PUT, DELETE
POST를 예로 들면 멱등하지 않는 메서드라고 하는데 POST는 리소스를 계속해서 생성해버리므로 100번 호출하면 100개의 리소스가 생성되어버린다. 이는 멱등하지 않는다고 표현한다.
멱등은 자동 복구 메커니즘에 사용할 수 있으므로 인지해야한다.
클라이언트가 DELETE를 호출하였음. 그런데 서버의 문제로 제대로 실행되지 않았다면?
클라이언트가 재실행하여도 되는가? 멱등한 메서드는 모두 가능하다.
이것이 자동 복구 메커니즘의 판단 근거이다.
멱등은 재요청 도중에 외부 요인으로 리소스가 변경된 것은 무시한다.
GET으로 데이터를 호출한 뒤 PUT을 실행하여 리소스를 변경하였다.
다시 GET을 호출하면 당연히 결과값은 다르다. 단순히 위의 공식에서도 어긋난다.
멱등은 f(g(f(x)))=f(x)가 아니고 f(f(x))=f(x)이다.
그러므로 외부 요인이 추가되어 결과값이 다르다면 그건 멱등에서 고려하지 않는 사항이다.
다음은 HTTP 메서드의 활용에 대해 알아보고 직접 설계해보려 한다.
출처 : 모든 개발자를 위한 HTTP 웹 기본 지식(김영한 강사님 인프런 강의)