2025.05.09~2025.05.14
- Java
- Spring Boot
- JDBC
| 기능 | Method | URL | Request | Response | Status Code |
|---|---|---|---|---|---|
| 일정 생성 | POST | /api/schedules | { "task": "과제하기", "name": "홍길동", "email": "[email protected]", "password": "1234" } |
{ "id": 1, "task": "과제하기", "author": "홍길동", "createdAt": "...", "updatedAt": "..." } |
201 Created |
| 전체 일정 조회 | GET | /api/schedules | /api/schedules?page=0&size=5&author=홍길동&updatedDate=2025-05-09 | [ { "id": 1, "task": "과제하기", "author": "홍길동", "createdAt": "...", "updatedAt": "..." }, ... ] |
200 OK |
| 선택 일정 조회 | GET | /api/schedules/{id} | /api/schedules/1 | { "id": 1, "task": "과제하기", "author": "홍길동", "createdAt": "...", "updatedAt": "..." } |
200 OK |
| 선택 일정 수정 | PUT | /api/schedules/{id} | /api/schedules/1{ "task": "강의듣기", "name": "홍길동", "email": "[email protected]", "password": "1234" } |
{ "id": 1, "task": "강의듣기", "author": "홍길동", "createdAt": "...", "updatedAt": "..." } |
200 OK |
| 선택 일정 삭제 | DELETE | /api/schedules/{id} | /api/schedules/1{ "password": "1234" } |
- | 200 OK |
- 일정의 고유 식별자(ID)와 할일, 작성자명, 비밀번호, 작성/수정일을 저장
- ID는 자동으로 생성된다.
- 적성일과 수정일 또한 따로 기입하지 않아도 자동으로 현재시간으로 입력된다. (최초 수정일은 작성일과 동일)
- 작성자명과 수정일을 토대로 전체 조회
- 작성자명과 수정일은 선택적으로 전달될 수 있도록 구현했다.
- ID를 토대로 선택 조회
- ID를 토대로 선택한 일정 수정
- 선택한 일정 내용 중 할일, 작성자명 만 수정 가능하다.
- 일정을 수정할 때, 서버는 전달받은 비밀번호가 일치하는 경우에만 수정하도록 처리했다.
- 수정일은 수정 완료 시, 수정한 시점으로 변경된다.
- ID를 토대로 선택한 일정 삭제
- 일정을 삭제할 때, 서버는 전달받은 비밀번호가 일치하는 경우에만 삭제하도록 처리했다.
- 일정과 작성자의 테이블을 분리하여 관리하도록 수정
- 작성자 테이블은 동명이인을 구분하기 고유 식별자(ID)를 부여하였다.
- 작성자 테이블은 이름과 이메일, 등록일과 수정일을 저장한다.
- 일정 테이블은 작성자 ID를 외래키로 참조하도록 설정하였다.
- 전체 일정 조회시 페이지네이션 적용 되도록 수정
- URL로 page와 size를 전달하면 그에 맞는 페이지가 뜨도록 구현했다.
- 단, 해당 page에 일정이 없을 경우 []로 출력된다.
- 예외들을 한 곳에서 처리하도록 예외 처리 직접 구현
- httpStatusException으로 처리하였다 예외들을 모두 직접 구현하도록 수정하였다.
- 잘못된 비밀번호인 경우에 대한 예외 처리를 구현했다.
- 조회를 할 수 없는 경우 각각의 상항에 맞춰 예외 처리를 구현했다.
- page에 일정이 없는 경우 [] 출력이 아닌 예외 처리로 수정하였다.
- src > main > java > com > example > scheduleapi > ScheduleApiApplication...main()을 실행한다.
- Postman을 사용하여 API 명세서를 토대로 요청을 보내면 응답을 받을 수 있다.
