일정 관리 API 서버입니다.
Java와 Spring Boot를 활용하여 일정 생성, 조회, 수정, 삭제 기능을 구현했습니다.
댓글 작성 및 댓글 포함 조회 기능도 포함되어 있습니다.
프로젝트 목적: RESTful API 개발 및 서버-DB 연동 이해를 바탕으로 실무 수준의 백엔드 시스템 구축 능력 향상.
주요 학습 목표:
- 3 Layer Architecture 설계
- JPA를 활용한 데이터베이스 연동
- HTTP 요청/응답 처리 (ResponseEntity)
- API 명세에 맞춘 CRUD 구현
- Postman을 활용한 API 테스트
Language: Java 17
Framework: Spring Boot
ORM: Spring Data JPA
IDE: IntelliJ IDEA
Build Tool: Gradle
Database: MySQL
필수 기능
- 일정 생성 (비밀번호 저장, JPA Auditing 적용)
- 전체 일정 조회 (작성자명 필터링 가능, 수정일 기준 정렬)
- 일정 단건 조회 (ID 기준)
- 일정 수정 (비밀번호 일치 시만 가능)
- 일정 삭제 (비밀번호 일치 시만 가능)
도전 기능
- 일정에 댓글 작성 (최대 10개)
- 일정 단건 조회 시 댓글 함께 응답
모든 API 응답에서 비밀번호는 제외됩니다.
# org.example.scheduleapi
├── controller
│ ├── CommentController
│ └── ScheduleController
│
├── dto
│ ├── CommentRequestDto
│ ├── CommentResponseDto
│ └── ...
│
├── entity
│ ├── Comment
│ └── Schedule
│
├── repository
│ ├── CommentRepository
│ └── ScheduleRepository
│
├── service
│ ├── CommentService
│ ├── CommentServiceImpl
│ └── ...
│
└── ScheduleApiApplication
- Postman을 활용해 API 테스트를 진행합니다.
- 각 요청에 대한 응답은 ResponseEntity를 통해 처리됩니다.
- API는 명세에 따라 설계되었으며, 요구사항에 맞춰 동작합니다.
- 설명: 새로운 일정을 생성합니다.
- 요청 본문 (
application/json):
{
"title": "제목",
"contents": "내용",
"writer": "작성자",
"password": "비번"
}-
설명:
전체 일정을 조회하거나, 특정 작성자의 일정만 필터링해서 조회합니다. -
쿼리 파라미터 (선택):
writer(optional): 작성자 이름- 이 값을 입력하면 해당 작성자의 일정만 조회
- 생략하면 전체 일정 조회
- 설명:
ID를 기준으로 하나의 일정을 조회합니다.
-
설명:
비밀번호를 검증한 후 일정을 수정합니다. (제목과 작성자만 수정 가능) -
요청 본문 (
application/json):
{
"title": "수정된 제목",
"writer": "작성자",
"password": "비밀번호"
}- 설명:
비밀번호를 입력해 해당 일정을 삭제합니다. - 요청 본문 (
application/json):
{
"password": "비밀번호"
}- 설명: 새로운 댓글을 생성합니다.
- 요청 본문 (
application/json):
{
"contents": "댓글 내용11",
"writer": "댓글 작성자11",
"password": "댓글비번6"
}- 설명:
ID를 기준으로 하나의 일정에 있는 댓글을 조회합니다
-
설명:
비밀번호를 검증한 후 댓글을 수정합니다. (내용과 작성자 수정 가능) -
요청 본문 (
application/json):
{
"contents": "수정된 내용",
"writer": "수정된 작성자",
"password": "댓글비번2"
}- 설명:
비밀번호를 입력해 해당 댓글을 삭제합니다. - 요청 본문 (
application/json):
{
"password": "비밀번호"
}https://www.notion.so/API-Lv1-Lv6-24255d5f00a080b3b2ecf5fdab82c12a?source=copy_link
https://app.swaggerhub.com/apis-docs/bibliyaseoorganizati/schedule-api/1.0.0#/