Response 결과와 함께 status code를 반환하는 이유는 무엇입니까?
요청의 성공 실패 결과를 약속된 HTTP Status Code로 명시하여 개발과정 및 오류 처리를 용이하게 함
status code 약속을 지키지 않아도 프로그램을 작성하는데는 아무런 지장이 없지만 프론트엔드처럼 API를 사용하는 쪽에서는 API의 사용법만 알면 되고 그 이면에 어떤 로직이 있는지 알지 못해도 개발이 가능하기 때문에 약속된 대로 상태코드를 보내주어 협업을 편하게 진행함
+추가정보+
[HTTP 메서드를 써야하는 이유와 어떻게 써야할지를 자세히 적은 문서:)]
https://evan-moon.github.io/2020/03/15/about-http-status-code/
[status code 문서]
https://uncertainty.oopy.io/05519ce4-9a62-4037-ad0a-e50def94f16e
회원탈퇴, 게시글 삭제와 같은 기능을 구현할 때 실제 레코드를 삭제합니까? 그렇지 않다면 그 이유는 무엇입니까?
데이터 자체를 삭제시 복구할 방법이 없으므로 테이블의 설계와 특성을 고려하여 물리적 삭제와 논리적 삭제를 해야합니다
- 물리적 삭제는 DB에서 정보를 완전 삭제하는 방법
- 논리적 삭제는 데이터에 flag를 다는 방법과 삭제 데이터를 옮겨 복구DB에서 관리하는 방법
논리적 삭제를 하는 이유는 related 테이블의 데이터 무결성을 보장하고 복구 가능성을 유지하며, 삭제 이력을 확인할 수 있기 때문입니다.
경우에 따라 어떻게 처리하는지?
- 회원 탈퇴 : 논리적 삭제
개인정보보호법 등의 법적 제약조건으로 고객정보를 일정기간 보관해야함
유저가 탈퇴 철회를 요청하는 경우 등
DB와 성능 관리를 위해 데이터 처리 후 일정시간이 지나면 완전히 삭제 - 게시글 삭제 : 설계﹒관리 방법에 따라 물리적 삭제와 논리적 삭제 모두 사용
ex. 사용자가 작성하는 자유게시판은 flag 처리하고 휴지통 등에서 확인, 복구 기능을 추가
관리자가 작성하는 공지사항 등은 바로 삭제
물리적 삭제의 경우 사용자의 편의성을 위해 데이터 삭제에 들어가기 전에 로직으로 이용자가 잘못된 선택을 하지 않도록 처리
개인 답변) 팀 프로젝트 개발 과정에서 유저가 공동구매에의 재 참여를 원할 경우를 고려하여 is_deleted필드를 flag로 달아 참여 혹은 취소했던 정보를 DB에서 지우지 않도록 처리했습니다.
'취대넓얕' 카테고리의 다른 글
[기술면접] 9일차 문답 | Django-DRF, serializer (0) | 2023.07.31 |
---|---|
[기술면접] 8일차 문답 | Restful API DRF (0) | 2023.07.28 |
[기술면접] 6일차 문답 | Django ORM (0) | 2023.07.26 |
[기술면접] 5일차 문답 | 테스트코드 Fixture CSRF (0) | 2023.07.25 |
[기술면접] 4일차 문답 | FBV CBV 테스트코드 TDD (2) | 2023.07.24 |