내일배움캠프 Spring 5기 일정 관리 API 프로젝트입니다.
Spring Boot와 Swagger를 활용하여 일정 CRUD 기능을 제공합니다.
이 프로젝트는 일정을 관리할 수 있는 API를 구현한 것입니다.
사용자는 일정을 등록, 조회, 수정(반복 수정 포함), 삭제할 수 있으며,
Swagger UI를 통해 API를 쉽게 확인하고 테스트할 수 있습니다.
- 일정 추가 (
POST /schedules)- 새로운 일정을 등록합니다.
- 일정 조회 (
GET /schedules)- 모든 일정을 조회합니다.
- 작성자와 날짜의 필터링을 통해 특정 일정을 조회할 수 있습니다.
- 일정 수정 (전체 및 부분 수정) (
PATCH /schedules/{id})- 비밀번호를 입력하여 특정 일정의 전체 또는 일부 정보를 수정할 수 있습니다.
- 일정 삭제 (
DELETE /schedules/{id})- 비밀번호를 입력하여 특정 일정을 삭제합니다.
Swagger를 통해 API를 쉽게 테스트할 수 있습니다.
http://localhost:8080/swagger-ui/index.html
http://localhost:8080/v3/api-docs
- 애플리케이션 실행 (
Spring Boot) - Swagger UI (
http://localhost:8080/swagger-ui/index.html)에서 API 테스트 - Postman 또는 REST 클라이언트로 API 호출 가능
- MySQL 데이터베이스에서 일정 데이터를 관리
+---------------+-------------------+---------------+
| HTTP Method | URL | 설명 |
+---------------+-------------------+---------------+
| `POST` | `/schedules` | 일정 추가 |
| `GET` | `/schedules` | 일정 전체 조회 |
| `PATCH` | `/schedules/{id}` | 일정 수정 |
| `DELETE` | `/schedules/{id}` | 일정 삭제 |
+---------------+-------------------+---------------+
POST /schedules
Description: 새로운 일정을 생성합니다.
{
"author": "사용자 이름",
"password": "비밀번호",
"task": "할 일 내용"
}{
"id": 1,
"author": "사용자 이름",
"task": "할 일 내용",
"createdAt": "2024-02-01 10:00",
"updatedAt": "2024-02-01 10:00"
}GET /schedules
Description: 등록된 모든 일정을 조회합니다. id, updatedAt, author로 필터링 가능
GET /schedules?updatedAt=2025-02-03
{
"id": 1,
"author": "사용자 이름",
"task": "할 일",
"createdAt": "2025-01-27 10:00",
"updatedAt": "2025-02-03 13:15"
}PATCH /schedules/{id}
Description: 일정 ID를 기준으로 특정 일정을 수정합니다. 작성자와 할 일을 수정할 수 있다.
PATCH /schedules/1
{
"task": "수정된 할 일 내용"
"password": "비밀번호",
}{
"id": 1,
"author": "사용자 이름",
"task": "수정된 할 일 내용",
"createdAt": "2024-02-01 10:00",
"updatedAt": "2024-02-01 12:00"
}{
"author": "수정된 사용자 이름",
"password": "비밀번호",
}{
"id": 1,
"author": "수정된 사용자 이름",
"task": "수정된 할 일 내용",
"createdAt": "2024-02-01 10:00",
"updatedAt": "2024-02-01 13:00"
}DELETE /schedules/{id}
"password": "비밀번호",200 OK
+-------------+--------------+------+-------------------+----------------+
| Field | Type | Key | Default | Extra |
+-------------+--------------+------+-------------------+----------------+
| id | BIGINT | PK | NULL | AUTO_INCREMENT |
| author | VARCHAR(100) | | NULL | |
| password | VARCHAR(100) | | NULL | |
| task | VARCHAR(255) | | NULL | |
| createdDate | DATETIME | | CURRENT_TIMESTAMP | |
| updatedDate | DATETIME | | CURRENT_TIMESTAMP | |
+-------------+--------------+------+-------------------+----------------+
├── src/main/java/com/example/scheduleProject
│ ├── controller
│ │ ├── ScheduleController.java # 일정 API 컨트롤러
│ ├── dto
│ │ ├── ScheduleRequestDto.java # 일정 요청 DTO
│ │ ├── ScheduleResponseDto.java # 일정 응답 DTO
│ ├── entity
│ │ ├── Schedule.java # 일정 엔티티
│ ├── repository
│ │ ├── ScheduleRepository.java # 일정 데이터베이스 인터페이스
│ │ ├── JdbcTemplateScheduleRepository.java # JDBC 구현체
│ ├── service
│ │ ├── ScheduleService.java # 일정 서비스 로직 인터페이스
│ │ ├── ScheduleServiceImpl.java # 일정 서비스 로직 구현
│ ├── config
│ │ ├── SwaggerConfig.java # Swagger 설정
│ ├── ScheduleApplication.java # 프로젝트 시작 파일
프로젝트 관련 문의는 @Seoyeon으로 연락주세요