HTTP 메서드의 속성에 대해 알아보자.
HTTP 메서드의 속성
안전 (Safe Methods)
호출해도 리소스를 변경하지 않는다. GET은 단순히 조회만 하기 때문에 안전하다. 그런데 호출했을 때 리소스가 변경되는 것은 안전하다고 할 수 없다. 따라서, 리소스가 변경되지 않는 것을 안전하다고 한다.
안전은 해당 리소스만 고려한다는 것을 인지하자.
멱등 (Idempotent Methods)
몇 번 호출하든 리소스의 결과가 똑같은 것을 멱등하다고 한다. 멱등은 이럴 때 사용할 수 있다.
예를 들어, 서버가 타임아웃되어서 정상 응답을 하지 못했을 때, 클라이언트가 같은 요청을 다시해도 결과가 바뀌지 않는다면 같은 요청을 또 해도 된다는 의미이다.
같은 요청을 하기전에 다른 곳에서 리소스를 변경해버리더라도 상관없다. 멱등은 외부 요인으로 중간에 리소스가 변경되는 것까지는 고려하지 않기 때문이다.
- GET: 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.
- PUT: 결과를 대체하기 때문에 같은 요청을 여러번해도 최종 결과는 같다.
- DELETE: 결과를 삭제하기 때문에 같은 요청을 여러번해도 삭제된 결과는 똑같다.
- POST: 멱등이 아니다. 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.
캐시가능 (Cacheable Methods)
응답 결과 리소스를 캐시해서 사용해도 되는가? 여기서 캐시해도 되냐는 의미는 웹 브라우저가 내부에 리소스를 저장해둔 것을 의미한다. 캐시 키를 일치하게 하여 캐시를 사용한다.
GET, HEAD, POST, PATCH가 캐시 가능하지만, 실제로는 GET, HEAD 정도만 캐시로 사용한다.
POST, PATCH는 메세지 바디까지 캐시 키로 고려해야 하는데 이를 구현하기는 쉽지 않기 때문이다.
GET, HEAD는 URI를 캐시 키로 잡고 캐시를 사용하면 된다.
'웹 공부하기 > HTTP' 카테고리의 다른 글
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP API 설계 예시) (0) | 2021.09.24 |
---|---|
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메서드 활용) (0) | 2021.09.24 |
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메서드) (0) | 2021.09.23 |
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 메세지) (0) | 2021.09.17 |
[인프런] 모든 개발자를 위한 HTTP 웹 기본 지식 (HTTP 기본) (0) | 2021.09.17 |