mocha-rm / scheduler-ver2

0 stars 0 forks source link

scheduler-ver2

일정관리 어플리케이션 ver2 입니다.

추가된 항목들


유저 API

유저 생성
| **이름** | **타입** | **설명** | **필수여부** | |----------|----------------------|---------| --- | | id | INT (AUTO_INCREMENT) | 유저 id | Y | | name | VARCHAR(10) | 유저 이름 | Y | | email | VARCHAR(40) | 유저 이메일 | Y | | password | VARCHAR(255) | 유저 이메일 | Y | ### Request ``` POST 'localhost:8080/users/signup' ``` ```json { "name": "Park", "email": "bbb@gmail.com", "password": "1234" } ``` ### Response Success HTTP Status : 201 ``` json { "id": 1, "name": "Park", "email": "bbb@gmail.com" } ```
유저 전체 조회
| **이름** | **타입** | **설명** | **필수여부** | |----------|----------------------|---------| --- | | id | INT (AUTO_INCREMENT) | 유저 id | Y | | name | VARCHAR(10) | 유저 이름 | Y | | email | VARCHAR(40) | 유저 이메일 | Y | ### Request ``` GET 'localhost:8080/users' ``` ### Response Success HTTP Status : 200 ``` json [ { "id": 1, "name": "Park", "email": "bbb@gmail.com" }, { "id": 2, "name": "Kim", "email": "kim@gmail.com" } ] ``` 유저가 없는 경우 빈 배열 반환 ``` json [] ```
특정 유저 조회
| **이름** | **타입** | **설명** | **필수여부** | |----------|----------------------|---------| --- | | id | INT (AUTO_INCREMENT) | 유저 id | Y | | name | VARCHAR(10) | 유저 이름 | Y | | email | VARCHAR(40) | 유저 이메일 | Y | ### Request ``` GET 'localhost:8080/users/{id}' ``` ### Response Success HTTP Status : 200 Fail HTTP Status : 404 성공 ``` json { "id": 1, "name": "Park", "email": "bbb@gmail.com" } ``` 실패 ``` json { "timestamp": "2024-11-15T03:09:07.588+00:00", "status": 404, "error": "Not Found", "message": "해당 유저를 찾을 수 없습니다.", "path": "/users/4" } ```
유저 삭제
### Request ``` DELETE 'localhost:8080/users/{id}' ``` ### Response Success HTTP Status : 200 Fail HTTP Status : 404 성공 ``` plaintext ``` 실패 ``` json { "timestamp": "2024-11-15T03:11:21.422+00:00", "status": 404, "error": "Not Found", "message": "해당 유저를 찾을 수 없습니다.", "path": "/users/5" } ```
로그인
| **이름** | **타입** | **설명** | **필수여부** | |----------|--------------|---------| --- | | name | VARCHAR(10) | 유저 이름 | Y | | email | VARCHAR(40) | 유저 이메일 | Y | | password | VARCHAR(255) | 유저 비밀번호 | Y | ### Request ``` POST 'localhost:8080/login' ``` ```json { "email": "bbb@gmail.com", "password": "1234" } ``` ### Response Success HTTP Status : 200 Fail HTTP Status : 401 성공 ``` json { "name": "Park", "email": "bbb@gmail.com", "responseMessage": "로그인 성공 !" } ``` 실패 ``` json { "timestamp": "2024-11-15T03:15:58.696+00:00", "status": 401, "error": "Unauthorized", "message": "잘못된 이메일 입니다.", "path": "/login" } ``` ``` json { "timestamp": "2024-11-15T03:17:09.684+00:00", "status": 401, "error": "Unauthorized", "message": "비밀번호가 일치하지 않습니다", "path": "/login" } ```
로그아웃
### Request ``` POST 'localhost:8080/logout' ``` ### Response Success HTTP Status : 200 ``` 로그아웃 성공 ```

일정 API

전체 일정 조회
| **이름** | **타입** | **설명** | **필수여부** | |----------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 일정 id | Y | | title | VARCHAR(200) | 일정 제목 | Y | | contents | VARCHAR(200) | 일정 내용 | Y | | username | VARCHAR(40) | 유저 이름 | Y | ### Request ``` GET 'localhost:8080/schedules' ``` ### Response Success HTTP Status : 200 데이터가 없으면 빈 배열을 반환합니다. 성공 ``` json [ { "id": 1, "title": "일정1", "contents": "내용1", "username": "Kim" }, { "id": 2, "title": "일정2", "contents": "내용2", "username": "Kim" }, { "id": 3, "title": "일정3", "contents": "내용3", "username": "Kim" }, { "id": 4, "title": "스파르타", "contents": "스프링", "username": "Kim" }, { "id": 5, "title": "스파르타", "contents": "스프링", "username": "Park" } ] ``` 데이터가 없는 경우 ``` json { [] } ```
선택 일정 조회
| **이름** | **타입** | **설명** | **필수여부** | |----------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 일정 id | Y | | title | VARCHAR(200) | 일정 제목 | Y | | contents | VARCHAR(200) | 일정 내용 | Y | | username | VARCHAR(40) | 유저 이름 | Y | ### Request id로 일정을 조회합니다. ``` GET 'localhost:8080/schedules/{id}' ``` ### Response 단일 일정 목록 Success HTTP Status : 200 Fail HTTP Status : 404 성공 ``` json { "id": 1, "title": "일정1", "contents": "내용1", "username": "Kim" } ``` 실패 ``` json { "timestamp": "2024-11-15T03:44:37.177+00:00", "status": 404, "error": "Not Found", "message": "해당 일정을 찾을 수 없습니다", "path": "/schedules/20" } ```
일정 생성
| **이름** | **타입** | **설명** | **필수여부** | |----------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 일정 id | Y | | title | VARCHAR(200) | 일정 제목 | Y | | contents | VARCHAR(200) | 일정 내용 | Y | | username | VARCHAR(40) | 유저 이름 | Y | ### Request ``` POST 'localhost:8080/schedules/{id}' ``` ```json { "title": "스파르타", "contents": "스프링" } ``` ### Response Success HTTP Status : 201 Fail HTTP Status : 400, 404 성공 ``` json { "id": 7, "title": "스파르타", "contents": "", "username": "Park" } ``` 실패 (등록된 유저가 없을 시) ``` json { "timestamp": "2024-11-15T03:48:30.818+00:00", "status": 404, "error": "Not Found", "message": "해당 유저를 찾을 수 없습니다.", "path": "/schedules/20" } ``` 실패 (validation) ``` json { "timestamp": "2024-11-15T03:48:51.455+00:00", "status": 400, "error": "Bad Request", "message": "Validation failed for object='scheduleRequestDto'. Error count: 1", "path": "/schedules/1" } ```
일정 수정
| **이름** | **타입** | **설명** | **필수여부** | |----------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 일정 id | Y | | title | VARCHAR(200) | 일정 제목 | Y | | contents | VARCHAR(200) | 일정 내용 | Y | | username | VARCHAR(40) | 유저 이름 | Y | ### Request ``` PUT 'localhost:8080/schedules/{id}' ``` ```json { "title": "수정하기", "contents": "허니 아이스아메리카노로 바꿔주세요" } ``` ### Response Success HTTP Status : 200 Fail HTTP Status : 404 성공 ``` json { "id": 1, "title": "수정하기", "contents": "허니 아이스아메리카노로 바꿔주세요", "username": "Kim" } ``` 실패 ``` json { "timestamp": "2024-11-15T03:52:16.391+00:00", "status": 404, "error": "Not Found", "message": "해당 일정을 찾을 수 없습니다", "path": "/schedules/22" } ```
일정 삭제
### Request ``` DELETE 'localhost:8080/schedules/{id}' ``` ### Response Success HTTP Status : 200 Fail HTTP Status : 404 성공 ``` ``` 실패 ``` json { "timestamp": "2024-11-15T03:55:45.057+00:00", "status": 404, "error": "Not Found", "message": "해당 일정을 찾을 수 없습니다", "path": "/schedules/222" } ```

댓글 API

댓글 생성
| **이름** | **타입** | **설명** | **필수여부** | |------------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 댓글 id | Y | | scheduleId | INT (AUTO_INCREMENT) | 일정 id | Y | | name | VARCHAR(10) | 유저 이름 | Y | | contents | VARCHAR(255) | 댓글 내용 | Y | ### Request ``` POST 'localhost:8080/schedules/{scheduleId}/comments' ``` ```json { "contents": "Park" } ``` ### Response Success HTTP Status : 201 Fail HTTP Status : 404 성공 ``` json { "id": 2, "name": "Park", "contents": "Park" } ``` 실패 ``` json { "timestamp": "2024-11-15T04:04:18.036+00:00", "status": 404, "error": "Not Found", "message": "해당 일정을 찾을 수 없습니다", "path": "/schedules/222/comments" } ```
댓글 조회
| **이름** | **타입** | **설명** | **필수여부** | |------------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 댓글 id | Y | | scheduleId | INT (AUTO_INCREMENT) | 일정 id | Y | | name | VARCHAR(10) | 유저 이름 | Y | | contents | VARCHAR(255) | 댓글 내용 | Y | ### Request ``` GET 'localhost:8080/schedules/{scheduleId}/comments' ``` ### Response Success HTTP Status : 200 ``` json [ { "id": 2, "name": "Park", "contents": "Park" } ] ``` 댓글이 없는 경우 빈 배열 반환 ``` json [] ```
댓글 수정
| **이름** | **타입** | **설명** | **필수여부** | |------------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 댓글 id | Y | | name | VARCHAR(10) | 유저 이름 | Y | | contents | VARCHAR(255) | 댓글 내용 | Y | ### Request ``` PUT 'localhost:8080/schedules/comments/{id}' ``` ```json { "contents": "Park 의 댓글 수정하기" } ``` ### Response Success HTTP Status : 200 Fail HTTP Status : 404 성공 ``` json { "id": 1, "name": "Park", "contents": "Park 의 댓글 수정하기" } ``` 실패 ``` json { "timestamp": "2024-11-15T04:11:08.548+00:00", "status": 404, "error": "Not Found", "message": "해당 댓글을 찾을 수 없습니다.", "path": "/schedules/comments/14" } ```
댓글 삭제
| **이름** | **타입** | **설명** | **필수여부** | |------------|----------------------|--------| --- | | id | INT (AUTO_INCREMENT) | 댓글 id | Y | ### Request ``` DELETE 'localhost:8080/schedules/comments/{id}' ``` ### Response Success HTTP Status : 200 Fail HTTP Status : 404 성공 ``` ``` 실패 ``` json { "timestamp": "2024-11-15T04:12:49.569+00:00", "status": 404, "error": "Not Found", "message": "해당 댓글을 찾을 수 없습니다.", "path": "/schedules/comments/255" } ```

ERD


트러블 슈팅