항해99
23.10.04 항해 99 16기 실전 프로젝트 1일차
김용글
2023. 10. 4. 23:09
오늘 공부한 것
* 실전 프로젝트 SA 작성
드디어 마지막 과제인 실전프로젝트날이 밝았다우리조는 BE4명 FE3명으로 최다인원이 구성되었다
어떤 프로젝트를 할까 고민하다가 여행계획을 짜는 애플리케이션을 만들어보기로했다
우선적으로 MVP로 간단한 기능들을 구현한 후 프론트엔드와 문제가 없으면 차근차근 한개씩 더 구현해보기로했다
1. API 명세서
기능 | API URL | Method | Request Header | Request | Response | Response header | 추가 설명 |
회원가입 | /api/signup | POST | {password: 1234, email: “rob@email.com”, nickName: “robbie”, userRole: “ADMIN”} | {msg: “회원가입 성공”, statusCode: 200} | userRole(user): 사용자 권한, userRole(admin): 관리자 권한, password: 특수문자 포함, 이메일의 경우 중복확인 및 특수문자 검증, 이메일 2차 인증 혹은 다른 방법으로 인증 (추가적으로: OAuth2.0가능하면 시도) | ||
로그인 | /api/login | POST | {email: “rob@email.com”, password: 1234} | {msg: “로그인 성공”, statusCode: 200} | {token: “avbscd”} | userRole(admin)의 경우 모든 권한 가능, (추가적으로 Refresh Token가능한지 확인) | |
전체 게시글 조회 | /api/posts | GET | @{{postid = 1, title: “제주도”, nickName: “rob”, likeNum: 100, createdAt: 2023-09-01},…} | 전체 게시물 조회 | |||
랭킹 목록 조회 | /api/posts/rank | GET | @{{postid = 1, title: “제주도”, nickName: “rob”, likeNum: 100, createdAt: 2023-09-01},…} | 랭킹으로 조회된 게시물을 좋아요 순으로 조회 (권한에 관계없이 모두 조회 가능해야함) | |||
상세 게시글 조회 | /api/posts/{postId} | GET | @{postid = 1, title: “제주도”, nickName: “rob”, likeNum: 100, createdAt: 2023-09-01, commentList: {comments: “좋았어요.” replyList{content: “저도 좋았어요.”, …}, …}} | 게시물에 달린 댓글과 그에 대한 대댓글을 함께 반환 (댓글 역시 작성 시간에 따라 내림차순 정렬) | |||
검색 | /api/search?keyword=”제주도” | GET | @{{postid = 1, title: “제주도”, nickName: “rob”, likeNum: 100, createdAt: 2023-09-01,commentList:[…replyList[..]]}} | ||||
게시글 작성 | /api/posts | POST | {token:“avbscd”} | {title: “제주도”, content: “제주바다입니다.”, category: “식도락”, startDate: “2023-09-01”, likeNum:+1 , -1, endDate: “2023-09-08”, likeNum: 100} | {msg: “등록 되었습니다.”, statusCode: 200} | category: “식도락”, “커플”, “나홀로”, “가족여행” 등이 있다. | |
선택한 게시글 수정 | /api/posts/{postid} | PUT | {token:“avbscd”} | {title: “제주도”, content: “제주바다입니다.”, category: “식도락”, startDate: “2023-09-01”, likeNum:+1 , -1, endDate: “2023-09-08”, likeNum: 100} | {msg: “수정 되었습니다.”, statusCode: 200} | 토큰과 username같이 검사 | |
선택한 게시글 삭제 | /api/posts/{postId} | DELETE | {msg: “삭제 되었습니다”, statusCode: 200} | 토큰을 통해 “username”을 검증할 수 있으므로, 이 정보와 작성자가 같은지 알아보려면 작성자의 “username”이 필요하다. | |||
세부일정 생성 | /api/schedules | POST | {token:“avbscd”} | {chosenDate: "2023-09-15”, contents:”카페가기”, placeName:”제주”, traffic:”랜트카”, costs:”20000”, accomodation:”호텔”, restaurants:”동네 맛집” } | {msg: “세부일정이 생성되었습니다.”, statusCode: 200} | 게시글 별로 세부 일정을 생성합니다, 세부일정 테이블은 추후 2차 정규화 및 변경 가능성이 있음. | |
세부일정 조회 | /api/schedules | GET | [{chosenDate: "2023-09-15”, contents:”카페가기”, placeName:”제주”, traffic:”랜트카”, costs:”20000”, accomodation:”호텔”, restaurants:”동네 맛집” }] | 게시글 별 | |||
세부일정 상세조회 | /api/schedules/{scheduleId} | GET | |||||
세부일정 수정 | /api/schedules/{scheduleId} | UPDATE | {token:“avbscd”} | {chosenDate: "2023-09-15”, contents:”카페가기”, placeName:”제주”, traffic:”랜트카”, costs:”20000”, accomodation:”호텔”, restaurants:”동네 맛집” } | {msg: “세부일정을 수정하였습니다.”, statusCode: 200} | ||
세부일정 삭제 | /api/schedules/{scheduleId} | DELETE | {token:“avbscd”} | ||||
댓글 작성 API |
/api/posts/{postId}/comments/{comentId} | POST | {token:“avbscd”} | {title: “저도 인사합니다.”, replyContents: “반갑습니다.”} | {commentid =1,title: “저도 인사합니다.”, nickName: “rob”, replyContents: “반갑습니다.”} | ||
댓글 조회 API |
/api/posts/{postId}/comments/ | GET | |||||
댓글 수정 API | /api/posts/{postId}/comments/{commentId} | PUT | {token:“avbscd”} | title: “다시 인사합니다.”, replyContents: “저도 반갑습니다.”} | {commentid =1,title: “다시 인사합니다.”, nickName: “rob”, replyContents: “저도 반갑습니다.”, createdAt: 2023-09-02} | 토큰을 가져와서 nickName이 맞는지 검사 | |
댓글 삭제 API |
/api/posts/{postId}/comments/{commentId} | DELETE | {token:“avbscd”} | {nickName: “rob”} | {msg: “댓글 삭제 성공”, statusCode: 200} | 토큰을 가져와서 nickName이 맞는지 검사 | |
대 댓글 생성 API |
/api/posts/{postId}/comments/{commentId}/replys | POST | {token:“avbscd”} | {msg: “대댓글을 생성하였습니다.”, statusCode: 200} | |||
대 댓글 조회 API |
/api/posts/{postId}/comments/{commentId}/replys | GET | |||||
대 댓글 수정 API |
/api/posts/{postId}/comments/{commentId}/replys/{replyId} | UPDATE | {token:“avbscd”} | {msg: “대댓글 성공”, statusCode: 200} | |||
대 댓글 삭제 API |
/api/posts/{postId}/comments/{commentId}/replys/{replyId} | DELETE | {token:“avbscd”} | {msg: “대댓글 삭제 성공”, statusCode: 200} |
2. ERD
3. 프로젝트 마인드맵