-
[김영한 스프링] 05. HTTP 메서드 - 속성, PUT, PATCH, DELETE웹/HTTP 웹 기본 지식 2023. 5. 25. 21:50
1. PUT, PATCH, DELETE
PUT
- 리소스를 대체
- 리소스가 있으면 대체
- 리소스가 없으면 생성
- 쉽게 이야기해서 덮어버림
- 폴더에 파일을 넣는 것과 비슷하다고 보면 됨
- 폴더에 파일을 넣을 때 파일이 없으면 생성, 있으면 덮어쓰기
- 중요! 클라이언트가 리소스를 식별
- 클라이언트가 리소스 위치를 알고 URI 지정
- POST와 차이점
- POST : /members -> 클라이언트는 어디에 만들어지는지 모름
- PUT : /members/100 -> 클라이언트가 지정함
리소스가 있는 경우1
리소스가 있는 경우2
리소스가 없는 경우1
리소스가 없는 경우2
주의! 리소스를 완전히 대체한다1
주의! 리소스를 완전히 대체한다2
PUT은 리소스를 덮어버리기 때문에 수정하기 어려움 그래서 PATCH를 사용
PATCH
- 리소스 부분 변경
리소스 부분 변경1
리소스가 있는 경우2
DELETE
- 리소스 제거
리소스 제거1
리소스 제거2
2. HTTP 메서드의 속성
- 안전(Safe Methods)
- 멱등(Idempotent Methods)
- 캐시가능(Cacheable Methods)
안전(Safe)
- 호출해도 리소스를 변경하지 않는다.
- Q : 그래도 계속 호출해서, 로그 같은 것이 쌓여서 장애가 발생하면요?
- A : 안전은 해당 리소스만 고려한다. 그런 부분까지 고려하지 않는다.
- GET : 안전
- POST, PUT, DELETE, PATCH : 안전X
멱등(Idempotent)
- f(f(x)) = f(x)
- 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다.
- 멱등 메서드
- GET : 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.
- PUT : 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다.
- DELETE : 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다.
- POST : 멱등이 아니다! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.
- 활용
- 자동 복구 메커니즘
- 서버가 TIMEOUT 등으로 정상 응답을 못 주었을때, 클라이언트가 같은 요청을 다시 해도 되는가? 판단 근거
- Q : 재 요청 중간에 다른 곳에서 리소스를 변경해버리면?
- 사용자1 : GET -> username : A, age : 20
- 사용자2 : PUT -> username : A, age : 30
- 사용자1 : GET -> username : A, age : 30 -> 사용자2의 영향으로 바뀐 데이터 조회
- A : 멱등은 외부 요인으로 중간에 리로스가 변경되는것까지는 고려하지는 않는다.
캐시가능(Cacheable)
- 응답 결과 리소스를 캐시해서 사용해도 되는가?
- GET, HEAD, POST, PATCH 캐시가능
- 실제로는 GET, HEAD 정도만 캐시로 사용
- POST, PATCH는 본문 내용가지 캐시 키로 고려해야 하는데, 구현이 쉽지 않음
출처 : https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC
'웹 > HTTP 웹 기본 지식' 카테고리의 다른 글
[김영한 스프링] 07. HTTP 상태코드 (0) 2023.05.27 [김영한 스프링] 06. HTTP 메서드 활용 (0) 2023.05.26 [김영한 스프링] 04. HTTP 메서드 - API 만들기, GET, POST 설명 (0) 2023.05.25 [김영한 스프링] 03. HTTP (0) 2023.05.24 [김영한 스프링] 02. URL, 웹 브라우저 요청 흐름 (0) 2023.05.22 - 리소스를 대체