김영한 강사님의 HTTP 웹 기본 지식 내용 발췌!
안전 (safe) - 음 그니까 조회말고 무언가를 변경하는거에 대한 안전(safe) 같다!
- 호출해도 리소스를 변경하지 않는다.
- Q: 그래도 계쏙 호출해서, 로그같은게 쌓여서 장애가 발생하면요?
- A: 안전은 해당 리소스만 고려한다. 그런 부분까지 고려하지 않는다.
멱등 (Idempotent)
- f(f(x)) = f(x)
- 한번 호출하든 몇번을 호출하든 결과가 똑같음
- 멱등 메소드
Get: 한번 조회하든 몇번을 하든 같은 결과 조회 - 음... 헤깔리는데 소스가 바뀌면 조회하는 결과물도 바뀌는거 아닌가...?
Put: 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다.
Delete: 결과 삭제: 같은 요청을 여러번해도 삭제된 결과는 똑같음
Post: 멱등이 아니다! 두번 호출하면 같은 결제가 중복해서 발생할 수 있다.
- 활용
자동 복구 메커니즘
서버가 TIMEOUT등으로 정상 응답을 못주었을 때, 클라이언트가 같은 요청을 다시 해도 되는가? 판단 근거
- Q: 재요청 중간에 다른 곳에서 리소스를 변경해버리면?
사용자1: GET -> user:A, age:20
사용자2: PUT -> user:A, age:30
사용자1: GET -> user:A, age:30 -> 사용자2의 영향으로 바뀐데이터 조회
- A: 멱등은 외부 요인으로 중간에 리소스가 변경되는것 까지 고려하지 않는다.
멱등 get 부분이 헤깔려서 찾아봄!
멱등 - 행복한 아빠님 블로그에서 가져온 멱등의 예시!
멱등이란 한 번 적용하나 여러 번 적용하나 항상 같은 결과를 나타내는 것을 이야기한다. 곱셈의 예를 들면 0으로 계속 곱하는 것은 멱등이다. ( 4 x 0 x 0 x 0 ...) 0으로 곱해도 마찬가지 결과이다. ( 4 x 1 x 1 x 1 ... 도 마찬가지이다.)
비슷하게 리소스에 동일한 오퍼레이션을 여러 번 요청해도 같은 결과일 경우 멱등이라 한다.
이부분은 개발자 Dion님의 블로그!
GET요청으로 목록을 불러옵니다. 이 행위를 여러 번 수행한다고, 서버의 상태가 변하지도 않고(단순히 조회만 하므로), 같은 효과를 기대할 수 있습니다.(요청한 데이터 목록을 조회하는 효과) 따라서 멱등성과 안전한 메소드가 성립함을 알 수 있습니다.
캐시가능 (Cacheable)
- 응답 결과 리소스를 캐시해서 사용해도 되는가?
- GET, HEAD, POST, PATCH 캐시가능
- 실제로는 GET, HEAD 정도만 캐시로 사용
POST, PATCH는 본문 내용까지 캐시 키로 고려해야 하는데 , 구현이 쉽지 않음.
[출처] www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
[출처] greatkim91.tistory.com/14
** 그냥 하루하루 개인 공부한 것을 끄적 거리는 공간입니다.
이곳 저곳에서 구글링한 것과 강의들은
내용이 정리가 되었습니다.
그림들은 그림밑에 출저표시를 해놓았습니다.
문제가 될시 말씀해주시면 해당 부분은 삭제 하도록하겠습니다. **
'public void static main() > Lecture' 카테고리의 다른 글
[Design Patterns] Singleton Pattern feat. 백기선 강사님 (0) | 2022.08.30 |
---|---|
[HTTP웹기본지식] HTTP 메서드 - PUT, PATCH, DELETE (0) | 2021.03.10 |
[SpringBoot] SpringBoot_02_스프링웹개발기초 (0) | 2021.01.18 |
[HTTP웹기본지식] HTTP_03_2 (0) | 2021.01.12 |
[HTTP웹기본지식] HTTP_03_1 (0) | 2021.01.12 |
댓글