✅ HTTP 메서드의 속성

1.안전

  1. 호출해도 리소스를 변경하지 않는다.

    • Q) 그래도 계속 호출해서, 로그 같은게 쌓여서 장애가 발생하면요? —> 안전은 해당 리소스만 고려한다. 그런 부분까지 고려하지 않는다.

2.멱등

  1. 한 번 호출하든, 두 번 호출하든 100번 호출하든 결과가 똑같다.
  2. 멱등 메서드

    • GET: 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.
    • PUT: 결과를 대체한다. 따라가 같은 요청을 여러번 해도 최종 결과는 같다.
    • DELETE: 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다.
    • POST: 멱등이 아니다!!! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.
  3. 활용

    • 자동 복구 메커니즘
    • 서버가 TIMEOUT 등으로 정상 응답을 못주었을 때, 클라이언트가 같은 요청을 다시 해도 되는가에 대한 판단 근거가 됨
  4. 재 요청 중간에 다른 곳에서 리소스를 변경해버리면?

    • 사용자1: GET —> userName: A, age: 20
    • 사용자2: PUT —> userName: A, age: 30
    • 사용자1: GET —> userName: A, age: 30 —> 사용자2의 영향으로 바뀐 데이터 조회

    —> 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다.


3.캐시가능

  1. 응답 결과 리소스를 캐시해서 사용해도 되는가?
  2. GET, HEAD, POST, PATCH 캐시가능
  3. 실제로는 GET, HEAD 정도만 캐시로 사용
  4. POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데, 구현이 쉽지 않음