내배캠/프로젝트, 개인과제 코드&내용정리

[내일배움캠프/백엔드] Spring 숙련 뉴스 피드 프로젝트 Lv0. API 명세 및 ERD 작성

jy3574 2024. 11. 19. 22:42
프로젝트 필수 기능 가이드

 

*프로젝트 목표

-Spring Boot 와 JPA를 활용한 기능 개발

-사용자와 친구 관계를 기반으로 최신 뉴스피드 데이터를 제공하는 시스템 구현

-회원가입, 로그인, 인증, 친구관리, 게시물 관리 등 CRUD가 포함된 뉴스피드 시스템 설계 및 구현

 

 

1. 프로필 관리

-프로필 조회 기능

  • 다른 사용자의 프로필 조회 시, 민감한 정보는 표시되지 않음

-프로필 수정 기능

  • 로그인한 사용자는 본인의 사용자 정보만 수정할 수 있음
  • 비밀번호 수정 조건
    • 비밀번호 수정시, 본인 확인을 위해 현재 비밀번호를 입력하여 올바른 경우에만 수정할 수 있음
    • 현재 비밀번호와 동일한 비밀번호로는 변경할 수 없음
  • 예외처리
    • 비밀번호 수정시, 본인 확인을 위해 입력한 현재 비밀번호가 일치하지 않은 경우
    • 비밀번호 형식이 올바르지 않은 경우
    • 현재 비밀번호와 동일한 비밀번호로 수정하는 경우

2. 뉴스피드 게시물 관리

-게시물 작성, 조회, 수정, 삭제 기능

  • 조건 : 게시물 수정, 삭제는 본인만 처리할 수 있음
  • 예외처리
    • 작성자가 아닌 다른 사용자가 게시물 수정, 삭제를 시도하는 경우

-뉴스피드 조회 기능

  • 기본 정렬은 생성일자 기준으로 내림차순 정렬
  • 10개씩 페이지네이션하여, 각 페이지 당 뉴스피드 데이터가 10개씩 나오게 함

3. 사용자 인증

-회원 가입 기능

  • 사용자 아이디 : 이메일 형식
  • 비밀번호
    • Bcrypt로 인코딩, 암호화를 위한 PasswordEncoder를 직접 만들어 사용
    • 대소문자 포함, 영문+숫자+특수문자를 최소 1글자씩 포함
    • 비밀번호는 최소 8글자 이상
  • 예외처리
    • 중복된 사용자 아이디로 가입하는 경우
    • 사용자 아이디 이메일과 비밀번호 형식이 올바르지 않은 경우

-회원 탈퇴 기능

  • 조건
    • 탈퇴 처리 시 비밀번호를 확인한 후 일치할 때 탈퇴 처리
    • 탈퇴한 사용자의 아이디는 재사용할 수 없고, 복구할 수 없음
  • 예외처리
    • 사용자 아이디와 비밀번호가 일치하지 않는 경우
    • 이미 탈퇴한 사용자 아이디인 경우

4. 친구 관리

-특정 사용자를 친구로 추가 / 삭제할 수 있음

-친구 기능이 구현되었다면, 뉴스피드에 친구의 최신 게시물들을 최신순으로 볼 수 있음

  • 주의사항 : 친구는 상대방의 수락 기능이 필요

ERD 설계

 

*테이블

1. User

-사용자 정보, 프로필, 가입, 탈퇴 상태 관리

-민감 정보 보호를 위해 비밀번호는 암호화(Bcrypt)

 

2. Friends

-친구 관계 및 요청 상태 관리

 

3. Posts

-게시물 데이터와 작성자 정보를 저장

 

*연관관계

-User <-> Friends (1:n) -유저는 여러 친구 관계를 가질 수 있음

-User <-> Posts (1:n) - 유저는 여러 게시물을 작성 가능


API 명세서 작성

 

내가 맡은 부분

-page와 size(개수)를 반환할때는 totalcount도 같이 반환해줘야함

-게시물 조회를 할 때 전체공개를 할 것인지 특정 사용자 게시물 공개를 할 것인지 고민해봐야함

-친구의 게시물만 조회할 수 있게 하려면 전체 게시물 조회도 인증을 했을 시에 볼 수 있게 처리