8000 GitHub - lis0517/challenge-app
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

lis0517/challenge-app

Repository files navigation

Challenge

이 프로젝트는 같은 목표를 가진 사람들과 함께 목표를 달성할 수 있는 동기부여 앱입니다. 자유롭게 달성하고 싶은 목표를 올리거나 달성하고 싶은 목표에 참가하여 함께 목표를 이룰 수 있습니다.

🛠️ Tech Stack

  • Spring Boot
  • Spring Security
  • JWT (JSON Web Token)
  • JPA (Java Persistence API)
  • MySQL

🔖 Features

  • 사용자 인증 기능

    • 회원가입
    • 로그인
    • 로그아웃
  • 프로필 관리

    • 비밀번호 수정
    • 프로필 수정
  • 게시물 CRUD 기능

    • 조회
    • 작성
    • 수정
    • 삭제
  • 댓글 CRUD 기능

    • 작성
    • 수정
    • 삭제
  • 백오피스 기능

    • 사용자 권한 관리자로 승격
    • 사용자 권한 관리
    • 전체 사용자 조회
    • 사용자 삭제

API

Postman 명세서로 이동

  • 모든 API에 대한 반환은 Content-Type: application/json; charset=utf-8를 기본으로 합니다.
  • 인증은 Bearer Token을 통해 진행합니다.
  • Response

    • Post
    {
        "data": {
            "id": 7,
            "username": "test1234",
            "title": "post test",
            "content": "content test",
            "createdAt": "2024-06-21T03:17:04.1310677",
            "updatedAt": "2024-06-21T03:17:04.1310677"
        }
    }
    • Post (page)
    {
        "status": 200,
        "message": "The request has been successfully processed.",
        "data": {
            "totalPages": 1,
            "totalElements": 5,
            "first": true,
            "last": true,
            "size": 5,
            "content": [
                {
                    "id": 13,
                    "username": "test1234",
                    "title": "post test7!",
                    "content": "content test7!",
                    "createdAt": "2024-06-21T12:55:19.795803",
                    "updatedAt": "2024-06-21T12:55:19.795803"
                },
                {
                    "id": 12,
                    "username": "test1234",
                    "title": "post test6!",
                    "content": "content test6!",
                    "createdAt": "2024-06-21T12:54:57.901893",
                    "updatedAt": "2024-06-21T12:54:57.901893"
                },
                {
                    "id": 11,
                    "username": "test1234",
                    "title": "점심 뭐 먹지",
                    "content": "배고픔",
                    "createdAt": "2024-06-21T12:51:47.155775",
                    "updatedAt": "2024-06-21T12:52:10.500887"
                },
                ...
            ],
            "number": 0,
            "sort": {
                "empty": false,
                "sorted": true,
                "unsorted": false
            },
            "numberOfElements": 5,
            "pageable": {
                "pageNumber": 0,
                "pageSize": 5,
                "sort": {
                    "empty": false,
                    "sorted": true,
                    "unsorted": false
                },
                "offset": 0,
                "paged": true,
                "unpaged": false
            },
            "empty": false
        }
    }
    • User
    {
        "data": {
            "id": 7,
            "username": "test1234",
            "title": "post test",
            "content": "content test",
            "createdAt": "2024-06-21T03:17:04.1310677",
            "updatedAt": "2024-06-21T03:17:04.1310677"
        }
    }
    {
        "data": {
            "username": "test1234",
            "nickname": "Lee",
            "introduce": "hi!",
            "email": "test@example.com"
        }
    }
    • UserList
    {
        "data": [
            {
                "username": "admin",
                "nickname": "admin",
                "introduce": "admin account",
                "email": "admin@example.com"
            },
            {
                "username": "test1234",
                "nickname": "Lee",
                "introduce": "hi!",
                "email": "test@example.com"
            },
            {
                "username": "test1235",
                "nickname": "Lee",
                "introduce": "hi!",
                "email": "test@example.com"
            },
            {
                "username": "test1236",
                "nickname": "Lee",
                "introduce": "hi!",
                "email": "test@example.com"
            },
            ...
        ],
        "message": "The request has been successfully processed.",
        "status": 200
    }
    • Comment
    {
        "data": {
            "id": 3,
            "content": "테스트1",
            "username": "test1234",
            "createdAt": "2024-06-21T10:06:02.7847837",
            "updatedAt": "2024-06-21T10:06:02.7847837"
        },
        "message": "Success",
        "status": 200
    }
    • Comments
    {
        "data": [
            {
                "id": 1,
                "content": "테스트1",
                "username": "test1234",
                "createdAt": "2024-06-21T03:45:58.049485",
                "updatedAt": "2024-06-21T03:45:58.049485"
            },
            {
                "id": 2,
                "content": "테스트1",
                "username": "test1234",
                "createdAt": "2024-06-21T10:03:26.974083",
                "updatedAt": "2024-06-21T10:03:26.974083"
            },
            {
                "id": 3,
                "content": "테스트1",
                "username": "test1234",
                "createdAt": "2024-06-21T10:06:02.784784",
                "updatedAt": "2024-06-21T10:06:02.784784"
            }
        ],
        "message": "Success",
        "status": 200
    }
    • Default Success Code
    {
        "status": 200,
        "message": "The request has been successfully processed.",
        "data": null
    }
    • 204 No conent

    • 대표적인 에러 코드

      • 401 for Unauthorized requests
      • 400 for Bad requests
      • 404 for Not found requests
      • 409 for Confict error requests
      • 403 forbidden
  • 인증
Title HTTP Method URL Request Response Auth
로그인 POST /api/auth/login {"username": "test1235","password": "Test1234!@"} Default Success Code

401 Unauthorized

404 Not found
No
로그아웃 DELETE /api/auth/logout Default Success Code

401 Unauthorized
Yes
  • 유저
Title HTTP Method URL Request Response Auth
회원가입 POST /api/users { "username":"test1235", "password":"Test1234!@", "nickname": "Lee", "introduce": "hi!", "email":"test@example.com" } Default Success Code No
회원탈퇴 DELETE /api/users Default Success Code

401 Unauthorized
Yes
회원정보 조회 GET /api/users Default Success Code User Yes
회원정보 수정 PUT /api/users { "nickname": "Kim", "introduce" : "bye!"} Default Success Code UserInfo Yes
비밀번호 변경 PUT /api/users/password { "currentPassword" : "Test1234!", "password" : "Test5678!" } Default Success Code

400 Bad Requset

401 Unauthorized
Yes
  • 게시물
Title HTTP Method URL Request Response Auth
게시글 등록 POST /api/posts {"title" : "post test", "content" : "test content"} Default Success Code Yes
선택한 게시글 조회 GET /api/posts/{postId} Default Success Code Post

401 Unauthorized

404 Not found
No
선택한 게시글 수정 PUT /api/posts/{postId} { "title" : "edit post test", "content" : "edit content"} Default Success Code Post

401 Unauthorized

404 Not found
Yes
선택한 게시글 삭제 DELETE /api/posts/{postId} 204 No content

401 Unauthorized

404 Not found
Yes
전체 게시글 조회 GET /api/posts?page=0&size=5&sort=createdDate,desc Post (page) No
  • 댓글
Title HTTP Method URL Request Response Auth
댓글 작성 POST /api/posts/{postId}/comments {"content" : "write a comment"} Default Success Code Comment

401 Unauthorized

404 Not found
Yes
댓글 수정 PUT /api/posts/{postId}/comments/{commentId} {"content" : "edit comment."} Default Success Code Comment

401 Unauthorized

404 Not found
Yes
댓글 삭제 DELETE /api/posts/{postId}/comments/{commentId} 204 No content

401 Unauthorized

404 Not found
Yes
댓글 조회 GET /api/posts/{postId}/comments Default Success Code Comment

401 Unauthorized

404 Not found
Yes
  • 관리자
Title HTTP Method URL Request Response Auth
사용자 전체 목록 조회 GET /api/admin/users Default Success Code UserList

403 Forbidden
Yes
사용자 권한 수정 PUT /api/admin/users/{userId}/role Default Success Code

403 Forbidden
Yes
사용자 관리자로 승격 PUT /api/admin/users/{userId}/promote Default Success Code

403 Forbidden
Yes
사용자 삭제 DELETE /api/admin/users/{userId} 204 No content

403 Forbidden
Yes
게시글 전체 목록 조회 GET /api/admin/posts Default Success Code PostList

403 Forbidden
Yes
게시글 수정 PUT /api/admin/posts/{postId} Default Success Code Post

403 Forbidden
Yes
게시글 삭제 DELETE /api/admin/posts/{postId} 204 No content

403 Forbidden
Yes
댓글 전체 목록 조회 GET /api/admin/comments Default Success Code Comments

403 Forbidden
Yes
댓글 수정 PUT /api/admin/comments/{commentId} Default Success Code Comment

403 Forbidden
Yes
댓글 삭제 DELETE /api/admin/comments/{commentId} 204 No content

403 Forbidden
Yes

🧱 ERD

drawSQL-image-export-2024-06-24

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages

0