안전한 메서드 (Safe Methods)
서버의 상태를 변경하지 않는 HTTP 메서드.
특징
- 리소스 변경 없음: 요청을 여러 번 보내도 서버의 상태가 동일하게 유지됩니다.
- 읽기 전용 작업: 주로 데이터를 조회하는 용도로 사용됩니다.
- 부작용 없음: 서버의 상태를 변경하지 않으므로 안전하게 여러 번 호출할 수 있습니다.
중요성
- 신뢰성: 클라이언트가 서버의 상태를 변경하지 않고 안전하게 정보를 요청할 수 있습니다.
- 캐싱 최적화: 안전한 메서드는 캐시하기에 적합하여 성능 향상에 도움이 됩니다.
- 사용자 경험: 브라우저가 안전한 메서드를 자유롭게 호출할 수 있어 프리페칭 등의 기능을 구현할 수 있습니다.
구현 방법
- 읽기 전용 로직: 안전한 메서드 구현 시 서버의 상태를 변경하지 않는 로직만 포함해야 합니다.
- 멱등성 보장: 안전한 메서드는 멱등성도 가져야 하므로, 여러 번 호출해도 동일한 결과를 반환하도록 구현합니다.
- 예외 처리: 안전한 메서드가 서버 상태를 변경하지 않도록 주의깊게 예외를 처리해야 합니다.
이점
- 성능 최적화: 안전한 메서드는 캐싱이 가능하여 네트워크 트래픽을 줄이고 응답 시간을 개선할 수 있습니다.
- 보안 강화: 데이터를 변경하지 않으므로 무단 수정이나 삭제의 위험이 없습니다.
- 확장성: 안전한 메서드는 프록시나 중간 계층에서 자유롭게 처리할 수 있어 시스템 확장성이 향상됩니다.
HTTP 메서드별 안전성
- GET: 안전한 메서드. 리소스를 조회하는 용도로 사용됩니다.
- HEAD: 안전한 메서드. GET과 유사하지만 헤더 정보만 반환합니다.
- OPTIONS: 안전한 메서드. 서버가 지원하는 메서드 정보를 반환합니다.
- POST: 안전하지 않은 메서드. 새로운 리소스를 생성하거나 데이터를 제출합니다.
- PUT: 안전하지 않은 메서드. 리소스를 생성하거나 대체합니다.
- DELETE: 안전하지 않은 메서드. 지정된 리소스를 삭제합니다.
- PATCH: 안전하지 않은 메서드. 리소스의 부분적인 수정에 사용됩니다.—