프로젝트 관련 질문 답변 SA질문
: 계층구조에 집중하기보다는 특정 리소스에 대한 동작에 집중하여 가독성을 높이는 쪽으로 url을 디자인했습니다. 신고라는 Report Entity가 리소스이면서, Restful API를 나타내기 위해서 /api/v1/reports를 기본으로 정했고, Controller RequestMapping주소를 활용하면서 생성 시 /api/v1/reports + RequestBody형태로 수정, 삭제 시 /api/v1/reports/{reportId}형태로 결정했습니다. 또한 계층형으로/api/v1/reviews/{reivewsId}/comments 쓰게 되면 리뷰에만 사용해야되어 비슷한 구조의 메서드들이 많이 생길수 있고 딱 리뷰에만 사용해야 하게때문에 새로운 계층이나 관계를 추가하기 어렵습니다. 하지만 비계층형 /api/v1/comments 으로 하면 다른곳에서도 쓸수있기 때문에 ****유연성이 높아서 데이터 구조에 새로운 항목이나 관계를 쉽게 추가할 수 있습니다.
: v1을 삽입한 이유는 API버전을 url에 포함시키는 것이 후에 버전 업데이트에 대비해서 클라이언트와 서버간의 호환성 유지에 적합하다고 판단했고, 버전을 명시적으로 표시하는 것이, 서버 배포 후에 API가 업데이트될 시 이전 버전과 새로운 버전간의 관계를 효과적으로 나타낼 수 있다고 생각했습니다.
: 설계단계에서 비식별관계로 통일함으로써 부모entity의 키 변경이 자식entity에 영향을 미치지 않고, 변경사항이 생기면 더 유연하게 모델을 구축할 수 있다고 판단했습니다.
: S3 콘솔에서 새로운 버킷을 만들고,MultipartFile 타입 을 이용해서 이미지를 받은후 해당 버킷에 업로드 한후, 이미지의 S3 버킷 URL을 얻어내어저장하고 있습니다.
: 채팅메시지 테이블의 id컬럼은 Chat Entity에 대한 개인키 컬럼이고, 기존에 있던 user_id 컬럼은 수신자와 발신자가 1:1로 채팅을 하기 때문에, 서로 발신자id에 대한 컬럼만 존재하면 되기때문에 sender_id로 컬럼을 수정하였습니다.
기술질문
: