- Published on
로그아웃 시 PATCH 방식과 DELETE 방식의 비교
- Authors

- Name
- Hyo814
1. PATCH 방식으로 로그아웃
PATCH 메서드란?
PATCH 메서드는 자원의 일부분을 수정할 때 씁니다. 로그아웃에 적용하면 사용자의 상태를 '로그아웃'으로 바꾸는 식으로 구현합니다. 서버에 사용자의 상태를 '활성'에서 '비활성', 또는 '로그인'에서 '로그아웃'으로 업데이트하라는 요청을 보내는 셈입니다.
PATCH 방식의 예시
// 클라이언트에서 로그아웃 요청 (PATCH)
const logout = async () => {
const response = await fetch('/api/logout', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ status: 'logged_out' }),
})
if (response.ok) {
localStorage.removeItem('authToken')
console.log('로그아웃 성공')
} else {
console.error('로그아웃 실패')
}
}
PATCH 방식의 특징
- 부분 업데이트: 자원의 일부만 수정하므로 효율적입니다.
- 유연한 상태 관리: 로그아웃뿐 아니라 사용자 상태를 여러 단계로 다뤄야 할 때 잘 맞습니다.
- 데이터 유지: 사용자의 세션 데이터를 남겨두거나 나중에 다시 활성화해야 할 때 유용합니다.
PATCH 방식의 장점
- 부분적인 상태 업데이트: 자원 전체를 교체할 필요 없이 상태만 효율적으로 바꿉니다.
- 상태 전환에 유리: 여러 상태를 유연하게 다룹니다.
- 다양한 시나리오에 적합: 로그아웃 상태를 기록하거나 상태 전환이 필요한 상황에서 유용합니다.
PATCH 방식의 단점
- 자원 제거가 아님: 로그아웃 후에도 세션이나 인증 정보가 서버에 남아 자원 낭비나 보안 위험으로 이어지기도 합니다.
2. DELETE 방식으로 로그아웃
DELETE 메서드란?
DELETE 메서드는 자원을 삭제할 때 씁니다. 로그아웃에 적용하면 사용자의 세션이나 인증 토큰을 지우는 식으로 구현합니다. 서버에서 세션이나 토큰이 사라지므로 더는 인증된 요청을 보낼 수 없습니다.
DELETE 방식의 예시
// 클라이언트에서 로그아웃 요청 (DELETE)
const logout = async () => {
const response = await fetch('/api/logout', {
method: 'DELETE',
headers: {
Authorization: `Bearer ${token}`,
},
})
if (response.ok) {
localStorage.removeItem('authToken')
console.log('로그아웃 성공')
} else {
console.error('로그아웃 실패')
}
}
DELETE 방식의 특징
- 자원 삭제: 사용자의 세션이나 인증 토큰을 서버에서 완전히 지웁니다.
- 보안에 유리: 로그아웃 후 인증 정보가 사라지므로 보안이 한층 단단해집니다.
- 클린업 처리: 불필요한 데이터를 정리해 서버 자원을 효율적으로 관리합니다.
DELETE 방식의 장점
- 자원 제거: 로그아웃 후 세션이나 인증 정보를 완전히 지워 접근을 차단합니다.
- 보안 강화: 인증 관련 보안 위험을 최소로 줄입니다.
- 자원 관리 최적화: 서버에 불필요한 데이터를 남기지 않습니다.
DELETE 방식의 단점
- 부분 업데이트가 불가: 세션 상태를 유지해야 한다면 맞지 않습니다.
- 데이터 복구 어려움: 한 번 삭제하면 되돌리기 어렵습니다.
3. PATCH vs DELETE 비교
| 특징 | PATCH 방식 | DELETE 방식 |
|---|---|---|
| 사용 목적 | 자원의 일부를 수정 (상태 전환) | 자원 전체를 삭제 (세션, 토큰 삭제) |
| 상태 관리 | 다양한 상태로 유연하게 전환 가능 | 자원 삭제로 상태 변경보다는 종료 처리 |
| 보안성 | 자원을 유지하므로, 일부 세션 데이터가 남을 수 있음 | 세션 삭제로 자원 접근 불가 |
| 자원 관리 | 상태만 변경하여 자원이 남을 수 있음 | 인증 정보를 삭제하여 자원 효율적 관리 |
| 적합한 상황 | 상태를 기록하거나 유연하게 처리할 때 | 인증 정보를 완전히 삭제하여 처리할 때 |
결론
- PATCH 방식은 상태 관리가 중요한 애플리케이션에 어울리며, 사용자의 로그아웃 상태를 기록하거나 상태를 유연하게 전환해야 할 때 적합합니다.
- DELETE 방식은 보안과 자원 관리를 중시하는 환경에 어울리며, 로그아웃 시 세션이나 인증 정보를 깔끔히 지워야 할 때 적합합니다.
구현 목적과 요구 사항에 맞춰 두 방식 중 알맞은 쪽을 골라 쓰면 됩니다.