![header](https://camo.githubusercontent.com/7d2c0980c4837815a0a8afc96c5cc08fdcd2edcfd1fa5f22415ab5a2e3ee92ab/68747470733a2f2f63617073756c652d72656e6465722e76657263656c2e6170702f6170693f747970653d776176696e6726636f6c6f723d6175746f266865696768743d3230302673656374696f6e3d68656164657226746578743d25454225383225393825454225383225393825454225414125413826666f6e7453697a653d3530)
🖥️ Spring_6기 A반 5조 익명 커뮤니티 나나모(나는 나를 모른다) 🖥️
Java 8
JDK 17.0.7
MySQL Server 8.0
JPA
- 회원가입 기능
- username, password를 Client에서 전달받기
- username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(a
z), 숫자(09)로 구성
- password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(A
Z, az), 숫자(0~9), 특수문자로 구성
- 회원 권한 부여하기 (USER, ADMIN)
- 로그인 및 로그아웃 기능
- username, password를 Client에서 전달받기
- DB에서 username을 사용해 저장된 회원의 유무를 확인하고, 있다면 password 비교
- JWT 활용
- 프로필 수정 기능
- 이름, 한줄 소개와 같은 기본적인 정보 수정 가능
- 비밀번호 수정 시, 비밀번호를 한 번 더 입력받는 과정 필요
- 최근 3번 안에 사용한 비밀번호는 사용할 수 없도록 제한
- 게시물 작성, 조회, 수정, 삭제 기능
- 게시물 조회를 제외한 나머지 기능들은 전부 인가(Authorization) 개념이 적용되어야 하며, 이는 JWT와 같은 토큰으로 검증 가능
- 오로지 본인만 게시글 수정, 삭제 가능
- 전체 게시글 정보를 조회하는 기능도 필요
- 댓글 작성, 조회, 수정, 삭제 기능
- 게시물에 댓글을 달 수 있고, 본인의 댓글 수정 및 삭제 가능
- 게시물과 마찬가지로 댓글 조회를 제외한 나머지 기능들은 인가(Authorization) 개념 적용
-
백오피스
- 관리자 페이지 만들기
- 회원 종류를 일반 회원과 관리자 회원으로 분리
- 회원 관리 또는 게시글 관리 화면 추가
-
프론트엔드 만들기
- 백엔드에서 제공하는 API를 통해 서버와 통신하는 프론트엔드 구현하기
-
좋아요 기능
- 게시물 및 댓글 좋아요 / 좋아요 취소 기능
- 사용자가 게시물이나 댓글에 좋아요를 남기거나 취소할 수 있어야 함
- 본인이 작성한 게시물 및 댓글 좋아요는 남길 수 없음
- 첫째 날 : 프로젝트 내용 정리, 역할 분담
- 둘째 날 : 완성된 기능마다 코드 취합하며 테스트
- 셋째 날 : 기본 기능 완료 및 추가 기능 역할 분담
- 넷째 날 : 추가 기능 완성된 부분마다 코드 취합하며 테스트
- 다섯째 날: 완성된 코드 취합하고 마무리, 발표 준비
- 김준영: 게시글 CRUD 및 좋아요, 백오피스 전체
- 서지인: 로그인 및 로그아웃
- 오수정: 회원가입, 백오피스
- 이수연: 댓글 CRUD 및 좋아요, 백오피스
- 추현중: 프로필 관리, 비밀번호 수정
회원 관련 API
기능 |
Method |
URL |
회원가입 |
POST |
/api/auth/signup |
로그인 |
POST |
/api/login |
로그아웃 |
- |
/api/logout |
게시글 관련 API
기능 |
Method |
URL |
메인 페이지 |
GET |
/ |
게시글 작성 및 수정 페이지 |
GET |
/api/post/(id={id})(required=false) |
게시글 상세 페이지 |
GET |
/api/post/{id} |
게시글 전체 조회 |
GET |
/api/posts/{method} |
게시글 작성 |
POST |
/api/post |
선택 게시글 조회 |
GET |
/api/post/{id} |
게시글 수정 |
PUT |
/api/post/{id} |
게시글 삭제 |
DELETE |
/api/post/{id} |
게시글 좋아요 |
POST |
/api/post/{id}/like |
게시글 좋아요 취소 |
PUT |
/api/post/{id}/like |
댓글 관련 API
기능 |
Method |
URL |
댓글 전체 조회 |
GET |
/api/post/comments |
댓글 작성 |
POST |
/api/post/{postid}/comment |
댓글 수정 |
PUT |
/api/post/{postid}/comment/{commentid} |
댓글 삭제 |
DELETE |
/api/post/{postid}/comment/{commentid} |
댓글 좋아요 |
POST |
/api/post/{postid}/comment/{commentid}/like |
댓글 좋아요 취소 |
PUT |
/api/post/{postid}/comment/{commentid}/like |
프로필 관련 API
기능 |
Method |
URL |
프로필 조회 |
GET |
/api/profile |
프로필 수정 페이지 |
GET |
/api/edit_profile/{id} |
비밀번호 수정 페이지 |
GET |
/api/edit_password |
프로필 수정 페이지(관리자) |
GET |
/api/edit_profile |
프로필 조회 |
GET |
/api/profile/{id} |
프로필 수정 |
PUT |
/api/profile/update/{id} |
비밀번호 수정 |
PUT |
/api/profile/password/{id} |
회원 프로필 개별 조회(관리자) |
GET |
/api/profile/{username} |
전체 프로필 조회(관리자) |
GET |
/api/profiles |
권한 부여(관리자) |
PUT |
/api/profile/role/{username} |
통계 관련 API
기능 |
Method |
URL |
통계 페이지 조회 |
GET |
/api/graph |
통계 데이터 조회 |
GET |
/api/getChartData |
통계 댓글 데이터 조회 |
GET |
/api/getChartDataComment |
통계 데이터 조회 |
GET |
/api/get-data |
- 테이블
컬럼명 |
데이터타입 |
기능 |
user_id (PK) |
BIGINT |
사용자ID |
username |
VARCHAR |
사용자 이름(ID) |
nickname |
VARCHAR |
사용자 닉네임 |
password |
VARCHAR |
사용자 비밀번호 |
role |
enum(‘admin’, ‘user’) |
사용자 역할 |
컬럼명 |
데이터타입 |
기능 |
id (PK) |
BIGINT |
게시글ID |
user_id (FK) |
BIGINT |
사용자ID |
title |
VARCHAR |
게시글 제목 |
content |
VARCHAR |
게시글 내용 |
username |
VARCHAR |
사용자 이름(ID) |
nickname |
VARCHAR |
사용자 닉네임 |
views |
VARCHAR |
게시글 조회수 |
like_count |
INT |
게시글 좋아요 수 |
created_at |
DATETIME |
게시글 작성일 |
modified_at |
DATETIME |
게시글 수정일 |
컬럼명 |
데이터타입 |
기능 |
id (PK) |
BIGINT |
댓글ID |
username (FK) |
BIGINT |
사용자ID |
post_id (FK) |
BIGINT |
게시글ID |
commentcontents |
VARCHAR |
댓글 내용 |
commentlike_count |
INT |
댓글 좋아요 수 |
created_at |
DATETIME |
댓글 작성일 |
modified_at |
DATETIME |
댓글 수정일 |
- post_likes (PostLike.java)
컬럼명 |
데이터타입 |
기능 |
id (PK) |
BIGINT |
게시글좋아요ID |
user_id (FK) |
BIGINT |
사용자ID |
post_id (FK) |
BIGINT |
게시글ID |
post_like |
BIT |
게시글 좋아요 여부 |
- commentlikes (Commentlike.java)
컬럼명 |
데이터타입 |
기능 |
id (PK) |
BIGINT |
댓글좋아요ID |
user_id (FK) |
BIGINT |
사용자ID |
post_id (FK) |
BIGINT |
게시글ID |
comment_id (FK) |
BIGINT |
댓글ID |
comment_like |
BIT |
댓글 좋아요 여부 |
![Footer](https://camo.githubusercontent.com/b27f04b2822058ed7f26264b52d01c96df729c2a9b1b7b1ee293935941adfb04/68747470733a2f2f63617073756c652d72656e6465722e76657263656c2e6170702f6170693f747970653d776176696e6726636f6c6f723d6175746f266865696768743d3230302673656374696f6e3d666f6f746572)