정의
서버의 상태를 변경하지 않는 요청
즉, 해당 요청을 실행해도 서버 데이터는 변하지 않고, 단순히 조회나 확인만 수행됩니다.
왜 알아야 할까?
서버 부작용을 방지하고 캐싱 처리에 도움
또한 브라우저나 프록시 서버가 캐싱을 적용할 수 있는 기준이 되기도 합니다.
주의: GET도 서버를 변경할 수 있다?
GET 요청도 서버 로그를 남기거나 분석 툴에 기록될 수 있습니다.따라서 HTTP 사양상은 안전하지만, 구현에 따라 부작용이 있을 수 있음을 이해해야 합니다.
이는 안정성은 클라이언트 관점의 설계 개념임을 뜻합니다.
RESTful 설계에서의 안정성
클라이언트는 GET이나 HEAD 요청을 언제든 안전하게 반복할 수 있어야 하며,
이로 인해 부하 분산, 캐싱, 프록시 처리에서도 중요한 기준이 됩니다.
안정한 메서드
다음 메서드는 안정성을 가집니다.
| 메서드 | 설명 |
|---|---|
| GET | 서버에서 데이터를 조회만 합니다. 서버 상태 변경 없음. |
| HEAD | GET과 같지만 응답 본문은 제외됩니다. 캐시 확인 등에 사용. |
| OPTIONS | 서버가 지원하는 메서드 정보를 조회합니다. 서버 변경 없음. |
| TRACE | 요청이 서버에 도달하는 경로를 그대로 반환합니다. 디버깅용. |
사용 예시
조회나 검증 작업에 적합합니다.
💡 GET: 게시판 목록 조회, 상품 정보 확인
💡 HEAD: 파일 존재 여부나 캐시 유효성 검사
💡 OPTIONS: CORS 사전 요청 (preflight request)
💡 TRACE: 네트워크 경로 추적 테스트