티스토리 뷰
728x90
반응형
HTTP 메서드에 알아보기전 안정성, 멱등성, 캐시가능성에 대해 먼저 알아보겠습니다.
안정성이란?(Safe)
- HTTP는 안전한 메서드라고 불리는 메서드의 집합입니다.
- 안전한 메서드의 목적은 서버에 어떠한 영향을 줄 수 있는 안전하지 않은 메서드가 사용될 때 사용자들에게 그 사실을 알려주는 것입니다.
- 읽기 전용인 메서드인 경우 안전한 메서드로 간주합니다.
- GET, HEAD, OPTIONS은 안전한 메서드로 정의되어 있습니다.
- 디버깅용 메서드 TRACE로 클라이언트 쪽에 공격을 시도하여 쿠키 및 웹 사이트 자격증명을 포함한 정보를 훔칠 수도 있기 때문에 안전하지 않는 메서드입니다.
캐시가능성이란?(Cachable)
- 향후 재사용을 위해 이에 대한 응답을 저장할 수 있음을 나타낼 수 있습니다.
- 일반적으로 현재 시점의 응답이나 권한이 있는 응답에 의존하지 않는 안전한 메서드는 캐시 가능한것으로 정의합니다.
- GET, HEAD, POST
멱등성이란?(Idempotent)
- 멱등성이란 수학에서 사용하는 용어에서 유래한 것으로 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 뜻합니다.
- 쉽게 말하자면 동일한 요청을 한 번 보내는 것과 여러 번 연속적으로 보내는 것이 같은 효과를 지니고 서버의 상태도 동일하게 남을 때 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다.
- HTTP 메서드 GET, POST, PUT, DELETE 중 POST를 제외하고는 모두 멱등성이 보장되어야 합니다.
무엇으로 멱등성을 판단할까?
- 멱등성은 요청의 효과를 보고 판단합니다.
- 서버의 상태가 멱등성이 유지되어야 하는 경우 같은 행위를 여러번 반복하더라도 같은 효과를 가져야 합니다. 멱등성이 성립하지 않으면 같은 행위를 여러번 반복하더라도 각 요청마다 다른 효과가 발생하게 됩니다.
예시
- GET kdg-is/1은 멱등성을 가집니다.
- 여러번 연속적으로 호출해도 클라이언트가 받는 응답은 동일합니다.
요청 --> GET /kdg-is/1
요청 --> GET /kdg-is/1
요청 --> GET /kdg-is/1
- POST kdg-is/insert는 멱등성을 갖지 않습니다.
- 여러번 연속적으로 호출할 경우 여러 열을 추가하게 됩니다.
요청 --> POST /kdg-is/insert/
요청 --> POST /kdg-is/insert/
요청 --> POST /kdg-is/insert/
- DELETE /kdg-is/delete/1의 상태 코드는 응답마다 달라질 수는 있지만 그럼에도 멱등성을 가집니다.
요청 --> DELETE /kdg-is/delete/1 --> Returns 200
요청 --> DELETE /kdg-is/delete/1 --> Returns 404 // 방금 삭제되었으므로 404 리턴
요청 --> DELETE /kdg-is/delete/1 --> Returns 404 // 삭제할 데이터가 없으므로 404 리턴
728x90
반응형
'Network' 카테고리의 다른 글
TCP 커넥션 관리 (0) | 2023.04.04 |
---|---|
HTTP 메시지 (0) | 2023.03.26 |
URL과 리소스 (0) | 2023.03.18 |
HTTP에 대해 (0) | 2023.03.18 |
Network - TCP-UDP란(feat. 3 way hand shake, 4 way hand shake) (2) | 2022.01.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 자바 백엔드 개발자 추천 도서
- spring boot redisson destributed lock
- java userThread와 DaemonThread
- pipeline architecture
- 레이어드 아키텍처란
- polling publisher spring boot
- spring boot poi excel download
- transactional outbox pattern spring boot
- spring boot redisson sorted set
- @ControllerAdvice
- java ThreadLocal
- transactional outbox pattern
- spring boot excel download paging
- 트랜잭셔널 아웃박스 패턴 스프링부트
- redis 대기열 구현
- pipe and filter architecture
- spring boot redisson 분산락 구현
- microkernel architecture
- 공간 기반 아키텍처
- 람다 표현식
- JDK Dynamic Proxy와 CGLIB의 차이
- redis sorted set
- redis sorted set으로 대기열 구현
- spring boot excel download oom
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot 엑셀 다운로드
- service based architecture
- space based architecture
- spring boot redis 대기열 구현
- 서비스 기반 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함