본문 바로가기
Aaron[에런]/Trouble Shootings

[Trouble Shootings #8] HTTP/DB - HTTP 메소드 관련 DELETE vs. PUT/PATCH

by Aaron-Kim 2022. 9. 23.

API를 설계하고 구현할 때 고민되는 것이 하나 있습니다.

 

우선 클라이언트 단 화면에서 삭제가 되었지만,

 

실제로 DB 단에서는 삭제가 되지 않고 수정이 되는 경우가 있습니다.

 

예를 들어, 사용자가 찜한 목록을 해제하였다면

 

그 해제한 날짜를 DB 테이블 컬럼에 추가만 하고 해당 레코드는 삭제하지 않는 경우입니다.

 

이렇게 하는 이유는 사용자가 찜했다가 찜을 해제한 사용자의 행태를 분석하여

 

보이지 않는 데이터를 가지고 유의미한 데이터를 만들어서 마케팅이나 여러 부분에 사용할 수 있기 때문입니다.

 

아마존에서 0.1초? 정도 속도를 줄이고 매출을 엄청 많이 오른 사례를 보면 상당히 중요한 이슈입니다.

 

그런데 백엔드 개발자 입장에서는 해당 API를 Restful 형식으로 개발한다는 가정 하에

 

DELETE 요청으로 처리해야 할지 또는 PUT/PATCH로 처리해야 할지 고민이 됩니다.

 

이에 대해서는 사실 프로젝트나 정책에 따라 다를 것 같긴 합니다.

 

하지만 한 시니어 개발자분으로부터 들은 바에 의하면

 

HTTP 자체는 클라이언트에서 서버로 요청을 하고 통신하는 수단이므로

 

DB단에서 실제로 레코드를 삭제하든 안하든 간에

 

클라이언트와 서버 통신 간의 입장에서 봤을 때 DELETE로 처리하는 것이 맞는 것 같습니다.

 

따라서 기능 구현에 있어서는 크게 문제가 되거나 그러지는 않지만

 

분명 고민이 되는 요소이기는 합니다.

 

PUT/PATCH로 해도 상관은 없지만 저는 앞으로 DELETE로 처리할 것 같습니다.


 

반응형

댓글