Programming/Web Projects

SPRING+REACT+MYSQL 프로젝트 (1)

서린이1 2024. 9. 3. 21:36

1. 프로젝트 주제 : 블로그형 게시판 만들기

 

   [화면 미리보기]

 

2. 기술 스택

 

[백엔드]

 - Java 17

 - Gradle

 

[프론트]

 - React.js

 

[DB]

 - MySQL

 

[IDE]
 - Visual Studio Code

 

3. API 설계

========================================

signIn (로그인)

- request
{
    이메일주소 : 문자열,
    비밀번호 : 문자열
}

- response

성공
{
    코드: 문자열,
    메시지: 문자열
}

실패

- 로그인 실패
Http Status - 401 (인증 실패 Unauthorized)
{
    code: "SF",
    message: "Sign In Failed."
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "Database Error."
}

========================================

signUp (회원가입)

- request

{
    "email: String,
    "password: String,
    "nickname: String,
    "telNumber: String, (0을 처음에 받으면 정수로 못받음, 그래서 문자열로 받음)
    "address: String,
    "addressDetail: String
}

- response

성공
Http Status - 200
{
    code: "SU",
    message: "Success.",
    token: "jwt ... token..",
    expiredDate: 123456789
}

실패

- 필수 정보 미입력
Http Status - 400 (Bad Request)
{
    code: "SU",
    message: "Existed Email",
}

- 이메일 중복

Http Status - 400 (Bad Request)
{
    code: "SU",
    message: "Existed Email",
}

- 필수 정보 미입력 / 이메일 포맷 불일치 / 비밀번호 8자 미만 / 전화번호 포맷 불일치
Http Status - 400 (Bad Request)
{
    code: "SU",
    message: "Existed Email",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "Existed Email",
}

========================================

weeklyTop3List (주간 상위 3 게시물 리스트)

- response
Http Status - 200 (OK)
성공
{
    code: "SU",
    message: "Success.",
    top3List: boardListItem[]
}

BoardListItem
{
    boardNumber: int,
    title: String,
    content: String,
    boardTitleImage: string(url),
    favoriteCount: int,
    commentCount: int,
    viewCount: int,
    writeDatetime: String,
    writerNickname: String,
    writerProfileImage: String(url)
}

실패

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

currentList (최신 게시물 리스트)

- response
Http Status - 200 (OK)
성공
{
    code: "SU",
    message: "Success.",
    top3List: boardListItem[]
}

BoardListItem
{
    boardNumber: int,
    title: String,
    content: String,
    boardTitleImage: string(url),
    favoriteCount: int,
    commentCount: int,
    viewCount: int,
    writeDatetime: String,
    writerNickname: String,
    writerProfileImage: String(url)
}

실패

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

popularWordList (인기 검색어 리스트)

- response
Http Status - 200 (OK)
성공
{
    code: "SU",
    message: "Success.",
    popularWordList: String[]
}

실패
- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}
========================================

searchList (검색 게시물 리스트)

- response

성공
Http Status - 200 (OK)
{
    code: "SU",
    message: "Success.",
    searchList: boardListItem[]
}

BoardListItem
{
    boardNumber: int,
    title: String,
    content: String,
    boardTitleImage: string(url),
    favoriteCount: int,
    commentCount: int,
    viewCount: int,
    writeDatetime: String,
    writerNickname: String,
    writerProfileImage: String(url)
}

실패
- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

relativeWordList (관련 검색어 리스트)

- response
Http Status - 200 (OK)
성공
{
    code: "SU",
    message: "Success.",
    relativeWordList: String[]
}

실패
- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}
========================================

boardDetail (게시물 상세 보기)

- response
성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success.",
    boardNumber: int,
    title: String,
    content: String,
    boardImage: string[],
    writeDatetime: String,
    writerEmail: String,
    writerNickname: String,
    writerProfileImage: String
}

실패
- 존재하지 않는 게시물
Http Status - 400 (Bad Request)
{
    code: "NB",
    message: "No Exist Board Number",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

favoriteList (좋아요 리스트)

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success.",
    favoriteList: FavoriteListItem[]
}

FavoriteListItem
{
    email: String,
    nickname: String,
    profileImage: String,
}

실패

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

putFavorite (좋아요 기능)

- request

{
    boardNumber: int
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

commentList (댓글 리스트)

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success.",
    commentList: CommentListItem[]
}

CommentListItem
{
    email: String,
    nickname: String,
    writeDatetime: String,
    content: String
}

실패

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

postComment (댓글 쓰기)

- request

{
    content: String
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 존재하지 않는 게시물

Http Status - 400 (Bad Request)
{
    code: "NB",
    message: "No Existed Board",
}

- 존재하지 않는 유저

Http Status - 400 (Bad Request)
{
    code: "NU",
    message: "No Existed User",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

boardDelete (게시물 삭제)

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 존재하지 않는 유저

Http Status - 400 (Bad Request)
{
    code: "NU",
    message: "No Existed User",
}

- 권한 없음
Http Status - 403 (Forbidden)
{
    code: "NP",
    message: "No Permission",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

boardWrite (게시물 쓰기)
- request

{
    "title": String,
    "title": String,
    boardImageList: string[]
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 존재하지 않는 유저

Http Status - 400 (Bad Request)
{
    code: "NU",
    message: "No Existed User",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

boardUpdate (게시물 수정)

- request

{
    "title": String,
    "title": String,
    boardImageList: string[]
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 존재하지 않는 유저

Http Status - 400 (Bad Request)
{
    code: "NU",
    message: "No Existed User",
}

- 권한 없음
Http Status - 403 (Forbidden)
{
    code: "NP",
    message: "No Permission",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

getUser (유저 정보 불러오기)

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success.",
    email: String,
    nickname: String,
    profileImage: String
}

실패

- 존재하지 않는 유저

Http Status - 400 (Bad Request)
{
    code: "NU",
    message: "No Existed User",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

userBoardList (특정 유저 게시물 리스트)

- response

성공
Http Status - 200 (OK)
{
    code: "SU",
    message: "Success.",
    boardList: boardListItem[]
}

BoardListItem
{
    boardNumber: int,
    title: String,
    content: String,
    boardTitleImage: string(url),
    favoriteCount: int,
    commentCount: int,
    viewCount: int,
    writeDatetime: String,
    writerNickname: String,
    writerProfileImage: String(url)
}

실패
- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

patchNickname (닉네임 수정)

- request

{
    nickname: String
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 존재하지 않는 유저

Http Status - 400 (Bad Request)
{
    code: "NU",
    message: "No Existed User",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

patchProfileImage (유저 프로필 이미지 수정)

- request

{
    profileImage: String
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 존재하지 않는 유저

Http Status - 400 (Bad Request)
{
    code: "NU",
    message: "No Existed User",
}

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

fileUpload (파일 업로드)
- request

{
    boardNumber: int
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

getFile (파일 불러오기)
- request

{
    boardNumber: int
}

- response

성공

Http Status - 200 (OK)

{
    code: "SU",
    message: "Success."
}

실패

- 데이터베이스 에러
Http Status - 500 (Internal Server Error)
{
    code: "DE",
    message: "",
}

========================================

 

출처 : https://www.youtube.com/@jiraynorprogramming1589