Spring Boot

일정 관리 App - API 명세서, Entity 생성 & MySQL Tables 생성

sounglikane 2024. 10. 1. 21:48

Github link: https://github.com/gbognon25/spring-schedule-management

일정 관리 App의 기능 Guide

Level1. API 명세서, ERD 작성, MySQL 작성

  • API 명세서 작성하기: API명, 요청 값(파라미터), 반환 값, 인증/인가 방식, 데이터 및 전달 형식 등
  • ERD 작성하기: Entity Relationship Diagram
  • MySQL 작성하기: 설치한 Database(MySQL)에 ERD를 따라 Tables 생성

Level2. 일정 생성 및 조회

1. 일정 생성(일정 작성하기)

  • 일정 생성 시, 포함되어야할 데이터
    • 할일, 작성자명, 비밀번호, 작성/수정일을 저장
    • 작성/수정일은 날짜와 시간을 모두 포함한 형태
  • 각 일정의 고유 식별자(ID)를 자동으로 생성하여 관리
  • 최초 입력 시, 수정일은 작성일과 동일

2. 전체 일정 조회(등록된 일정 불러오기)

  • 다음 조건을 바탕으로 등록된 일정 목록을 전부 조회
  • 수정일 (형식 : YYYY-MM-DD)
  • 작성자명
  • 조건 중 한 가지만을 충족하거나, 둘 다 충족을 하지 않을 수도, 두 가지를 모두 충족할 수도 있습니다.
  • 수정일 기준 내림차순으로 정렬하여 조회

3. 선택 일정 조회(선택한 일정 정보 불러오기)

  • 선택한 일정 단건의 정보를 조회할 수 있습니다.
  • 일정의 고유 식별자(ID)를 사용하여 조회합니다.

Level3. 일정 수정 및 삭제

  • 선택한 일정 수정
    • 선택한 일정 내용 중 할일, 작성자명만 수정 가능
    • 서버에 일정 수정을 요청할 때 비밀번호를 함께 전달합니다.
    •  작성일은 변경할 수 없으며, 수정일은 수정 완료 시, 수정한 시점으로 변경합니다.
  • 선택한 일정 삭제
    • 선택한 일정을 삭제할 수 있습니다.
    • 서버에 일정 수정을 요청할 때 비밀번호를 함께 전달합니다.

1. API 명세서

기능 Methods URL Request Response 상태 code
일정 생성 POST /api/schedule Request Body (JSON):
{"title":"할일", "task":"내용", "author":"작성자명", "password":"비밀번호"}
Response (JSON):
{ "id": 1, "title": "할일", "task": "내용", "author": "작성자명", "createdAt": "YYYY-MM-DD hh:mm:ss", "updatedAt": "YYYY-MM-DD hh:mm:ss" }
201 (CREATED)
전체 일정 조회 GET /api/schedule Query Params (Optional):
author, updatedAt
Response (JSON):
[ { "id": 1, "title": "할일", "task": "내용", "author": "작성자명", "createdAt": "YYYY-MM-DD hh:mm:ss", "updatedAt": "YYYY-MM-DD hh:mm:ss" } ]

200 (OK)
선택 일정 조회 GET /api/schedule/{id} Path Variable:
id
Response (JSON):
{ "id": 1, "title": "할일", "task": "내용", "author": "작성자명", "createdAt": "YYYY-MM-DD hh:mm:ss", "updatedAt": "YYYY-MM-DD hh:mm:ss" }
200 (OK)
일정수정 PUT /api/schedule/{id} Path Variable:
id

Request Body (JSON):
{ "title": "할일", "author": "작성자명" }

Query Param:
password=비밀번호
Response (JSON):
{ "id": 1, "title": "할일", "task": "내용", "author": "작성자명", "createdAt": "YYYY-MM-DD hh:mm:ss", "updatedAt": "YYYY-MM-DD hh:mm:ss" }
200 (OK)
일정 삭제 DELETE /api/schedule/{id} Path Variable:
id

Query Param:
password=비밀번호
Response:
내용 없음
204 (NO CONTENT)

 

2. ERD

Entity name : Schedule

 

Attributes:

1. id: 고유 식별자
2. title: 할일 (일정의 제목)
3. task: 일정의 내용
4. author: 작성자명
5. password: 비밀번호
6. createdAt: 일정의 작성일
7. updatedAt: 일정의 수정일

 

 

3. MySQL Table 생성

create table schedule
(
    id bigint primary key auto_increment not null,
    title varchar(200) not null,
    task text not null,
    author varchar(50) not null,
    password varchar(50) not null,
    createdAt datetime not null,
    updatedAt datetime not null
);