Spring/[P] 눈치우기 봉사활동 매칭 플랫폼

ERD 설계 & API 명세서

alsruds 2024. 1. 11. 22:07

2024.01.10 - [Spring/[Project] 눈치우기 봉사활동 매칭 플랫폼] - 서비스 소개 & 기능 정리

 

서비스 소개 & 기능 정리

눈 치우기 봉사활동 매칭 플랫폼!! ❄️ SnowCare ❄️ ☃️서비스 소개 ❄️SnowCare❄️ 는 눈 치우기 봉사활동 매칭 서비스를 제공하는 웹앱 형태의 어플리케이션 입니다 😊 자신의 지역에서, 이

alsrudalsrudalsrud.tistory.com

 

☃️ ERD

 

회원 관리

→ User Entity

 

봉사활동 구인 매칭

Volunteer Entity

CommentVolunteer Entity

LikeVolunteer Entity

 

커뮤니티

CommunityArticle Entity

CommentCommunityArticle Entity

LikeCommunityArticle Entity

 

나의 봉사활동 기록

UserVolunteerPost Entity

 

 

☃️ API 명세서

 

회원 관리

기능 HTTP Method End Point Header Request Body Response Body
카카오 로그인 POST /auth/kakao Content-Type: application/json { ”authorizationCode”: text } { "accessToken": text,
"refreshToken": text,
”userId”: int,
”newUser”: boolean }
로그아웃 POST /auth/kakao/logout Content-Type: application/json { ”accessToken”: text }  
닉네임 중복 확인 GET /users/nickname/{nickname}      
닉네임 변경 PATCH /users/nickname-edit?userId=1&nickname= Authorization: Bearer AccessToken    
access token 재발급 POST /auth/refresh-token Content-Type: application/json { ”refreshToken”: text } { "accessToken": text }
설정 수정 PATCH /users/setting Authorization: Bearer AccessToken

Content-Type: multipart/form-data;
{ ”userId” : bigint,
”region” : string,
”latitude”: double,
”longitude”: double,
”newVolunteerAlarm”: boolean,
”weatherAlarm” : boolean }
 

 

메인 페이지

기능 HTTP Method End Point Header Request Body Response Body
봉사활동 구인글 최신 3개 조회 GET /volunteers/recent?userId=1     [ { "volunteerId": bigint,
"userNickname": string,
"userImage": string,
"title": string,
"content": string,
"image": string,
"place": string,
"createdDate": datetime,
"likeCount": int,
"userLiked": boolean,
"comments": [ { "commentId": bigint,
"userNickname": string,
"content": string,
"createdDate": datetime } ], ... } ]

 

봉사활동 구인 매칭 페이지

기능 HTTP Method End Point Header Request Body Response Body
글 목록 조회 GET /volunteers?userId=1     [ { "volunteerId": bigint,
"userNickname": string,
"userImage": string,
"title": string,
"content": string,
"image": string,
"place": string,
"createdDate": datetime,
"likeCount": int,
"userLiked": boolean,
"comments": [ { "commentId": bigint,
"userNickname": string,
"content": string,
"createdDate": datetime }, ... ] }, ... ]
글 상세 조회 GET /volunteers/{volunteerId}?userId=1 Authorization: Bearer AccessToken   { “userNickname” : string,
“userImage” : string,
“volunteerId” : bigint,
“title” : string,
“content” : string,
“image” : string,
“place” : string,
“createdDate” : datetime,
“likeCount” : int,
“userLiked”: boolean,
“comments” : [ { “commentId” : bigint,
“userNickname” : string,
“content” : string, “createdDate” : datetime }, ... ] }
글 작성 POST /volunteers/new Authorization: Bearer AccessToken

Content-Type: multipart/form-data;
{ “userId” : bigint,
“title” : string,
“content” : string,
“place” : string,
“image” : MultipartFile }
{ “volunteerId” : bigint }
글 삭제 DELETE /volunteers/delete/{volunteerId} Authorization: Bearer AccessToken    
좋아요 추가 POST likes/volunteer?userId=1&volunteerId=1 Authorization: Bearer AccessToken    
좋아요 삭제 DELETE likes/volunteer/del?userId=1&volunteerId=1 Authorization: Bearer AccessToken    
댓글 추가 POST comments/volunteer Authorization: Bearer AccessToken

Content-Type: multipart/form-data;
{ “userId” : bigint,
“postId” : bigint,
“content” : text }
 
댓글 삭제 DELETE comments/volunteer/delete/{commentVolunteerId} Authorization: Bearer AccessToken    

 

커뮤니티 페이지

기능 HTTP Method End Point Header Request Body Response Body
글 목록 조회 GET /community?userId=1     [ { “userNickname” : string,
“userImage” : string,
“communityArticleId” : bigint,
“title” : string,
“content” : string,
“image” : string,
“createdDate” : datetime,
“likeCount” : int,
“userLiked”: boolean,
“comments” : [ { “commentId”: bigint,
“userNickname” : string,
“content” : string,
“createdDate” : datetime }, … ] }, ... ]
글 상세 조회 GET /community/{communityArticleId}?userId=1 Authorization: Bearer AccessToken   { “userNickname” : string,
“userImage” : string,
“communityArticleId” : bigint,
“title” : string,
“content” : string,
“image” : string,
“createdDate” : datetime,
“likeCount” : int,
“userLiked”: boolean,
“comments” : [ { “commentId”: bigint,
“userNickname” : string,
“content” : string,
“createdDate” : datetime }, … ] }
글 작성 POST /community/new Authorization: Bearer AccessToken

Content-Type: multipart/form-data;
{ “userId”: bigint,
“title” : string,
“content” : string,
“image” : MultipartFile }
{ “communityArticleId” : bigint }
글 수정 PATCH /community/edit/{communityArticleId} Authorization: Bearer AccessToken

Content-Type: multipart/form-data;
{ “userId”: bigint,
“title” : string,
“content” : string,
“image” : MultipartFile }
 
글 삭제 DELETE /community/delete/{communityArticleId} Authorization: Bearer AccessToken    
좋아요 추가 POST /likes/community?communityArticleId=1&userId=1 Authorization: Bearer AccessToken    
좋아요 삭제 DELETE /likes/community/del?communityArticleId=1&userId=1 Authorization: Bearer AccessToken    
댓글 추가 POST /comments/community Authorization: Bearer AccessToken

Content-Type: multipart/form-data;
{ “userId” : bigint,
“postId” : bigint,
“content” : text }
 
댓글 삭제 DELETE /comments/community/delete/{communityArticleId} Authorization: Bearer AccessToken    

 

 마이페이지

기능 HTTP Method End Point Header Request Body Response Body
좋아요한 봉사활동 구인글 조회 GET /likes/volunteer/{userId} Authorization: Bearer AccessToken   [ { "volunteerId": bigint,
"userNickname": string,
"userImage": string,
"title": string,
"content": string,
"image": string,
"place": string,
"createdDate": datetime,
”likeCount”: int,
”userLiked”: boolean }, ... ]
좋아요한 커뮤니티 글 조회 GET /likes/community/{userId} Authorization: Bearer AccessToken   [ { "communityArticleId": bigint,
"userNickname": string,
"userImage": string,
"createdDate": datetime,
"title": string,
"content": string,
"image": string,
”likeCount”: int,
”userLiked”: boolean }, ... ]
나의 봉사활동 기록글 목록 조회 GET /users/record?userId=1 Authorization: Bearer AccessToken   [ { “userVolunteerPostId” : bigint,
“title” : string,
“content” : string,
“image” : MultiPartFile,
“userVolunteerDate” : datetime }, ... ]
나의 봉사활동 기록글 상세 조회 GET /users/record/{userVolunteerPostId}?userId=1 Authorization: Bearer AccessToken   { “userVolunteerPostId” : bigint,
“title” : string,
“content” : string,
“image” : MultiPartFile,
“userVolunteerDate” : datetime }
나의 봉사활동 기록글 작성 POST /users/record/new Authorization: Bearer AccessToken   { “userVolunteerPostId” : bigint }
회원정보 조회 GET /users/{userId} Authorization: Bearer AccessToken   { ”userId”: bigint,
”nickname”: string,
”email” : string,
”profileImage”: string,
”region” : string,
”weatherAlarm” : boolean,
”newVolunteerAlarm” : boolean }
설정 수정 PATCH /users/setting Authorization: Bearer AccessToken { ”userId” : bigint,
”region” : string,
"latitude": double,
"longitude": double,
”newVolunteerAlarm”: boolean,
”weatherAlarm” : boolean }
 
프로필 이미지 수정 PATCH /users/profile-image Authorization: Bearer AccessToken { ”image”: MultiPartFile }