πŸ“Œ TODO API λ¬Έμ„œ

졜인호·2025λ…„ 4μ›” 2일

πŸ” 인증 (Authentication)

λͺ¨λ“  μš”μ²­μ—λŠ” λ°˜λ“œμ‹œ μ•„λž˜ 헀더λ₯Ό 포함해야 ν•©λ‹ˆλ‹€:

X-USER-ID: μ‚¬μš©μž μ‹λ³„μž (예: "dusen0528")
Content-Type: application/json

🌍 μ—”λ“œν¬μΈνŠΈ (Endpoints)

HTTP MethodEndpointμ„€λͺ…
POST/api/calendar/eventsμƒˆλ‘œμš΄ TODO 생성
DELETE/api/calendar/events/{id}νŠΉμ • ID의 TODO μ‚­μ œ
DELETE/api/calendar/events/daily/{todoDate}νŠΉμ • λ‚ μ§œμ˜ λͺ¨λ“  TODO μ‚­μ œ
GET/api/calendar/events/?year={year}&month={month}&day={day}νŠΉμ • λ‚ μ§œμ˜ TODO 쑰회
GET/api/calendar/daily-register-count?date={todoDate}νŠΉμ • λ‚ μ§œμ˜ TODO 개수 쑰회
GET/api/calendar/events/{id}νŠΉμ • ID의 TODO 쑰회
GET/api/calendar/events/?year={year}&month={month}νŠΉμ • μ›”μ˜ TODO 리슀트 쑰회

πŸ“Œ μ—”λ“œν¬μΈνŠΈ 상세

βœ… 1. μƒˆλ‘œμš΄ TODO 생성

  • μ„€λͺ…: μƒˆλ‘œμš΄ TODOλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
  • HTTP Method: POST
  • URL: /api/calendar/events

헀더:

Content-Type: application/json
X-USER-ID: μ‚¬μš©μž ID

μš”μ²­ λ³Έλ¬Έ (Request Body):

{
  "subject": "todo 제λͺ©",
  "eventAt": "2025-04-02"
}

응닡 μ½”λ“œ:

  • 201 Created: μ„±κ³΅μ μœΌλ‘œ 생성됨 βœ…
  • 400 Bad Request: μš”μ²­ 데이터가 잘λͺ»λ¨ ⚠️
  • 403 Forbidden: ν•˜λ£¨ μ΅œλŒ€ TODO 개수 초과 ❌

응닡 μ˜ˆμ‹œ:

{
  "id": 123,
  "subject": "todo 제λͺ©",
  "eventAt": "2025-04-02",
  "createdAt": "2025-04-02T12:00:00Z"
}

❌ 2. νŠΉμ • ID의 TODO μ‚­μ œ

  • μ„€λͺ…: νŠΉμ • ID에 ν•΄λ‹Ήν•˜λŠ” TODOλ₯Ό μ‚­μ œν•©λ‹ˆλ‹€.
  • HTTP Method: DELETE
  • URL: /api/calendar/events/{id}

헀더:

X-USER-ID: μ‚¬μš©μž ID

응닡 μ½”λ“œ:

  • 204 No Content: μ„±κ³΅μ μœΌλ‘œ μ‚­μ œλ¨ βœ…
  • 404 Not Found: ν•΄λ‹Ή IDκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ ⚠️

응닡 μ˜ˆμ‹œ:

{
  "message": "μ‚­μ œ μ™„λ£Œ"
}

πŸ—‘ 3. νŠΉμ • λ‚ μ§œμ˜ λͺ¨λ“  TODO μ‚­μ œ

  • μ„€λͺ…: μ§€μ •λœ λ‚ μ§œμ˜ λͺ¨λ“  TODOλ₯Ό μ‚­μ œν•©λ‹ˆλ‹€.
  • HTTP Method: DELETE
  • URL: /api/calendar/events/daily/{todoDate}

헀더:

X-USER-ID: μ‚¬μš©μž ID

응닡 μ½”λ“œ:

  • 204 No Content: μ„±κ³΅μ μœΌλ‘œ μ‚­μ œλ¨ βœ…
  • 404 Not Found: ν•΄λ‹Ή λ‚ μ§œμ— λ“±λ‘λœ TODOκ°€ μ—†μŒ ⚠️

πŸ“… 4. νŠΉμ • λ‚ μ§œμ˜ TODO 쑰회

  • μ„€λͺ…: μ§€μ •λœ λ‚ μ§œμ— λ“±λ‘λœ λͺ¨λ“  TODOλ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.
  • HTTP Method: GET
  • URL: /api/calendar/events/?year={year}&month={month}&day={day}

헀더:

X-USER-ID: μ‚¬μš©μž ID

응닡 μ½”λ“œ:

  • 200 OK: μš”μ²­ 성곡 βœ…
  • 404 Not Found: ν•΄λ‹Ή λ‚ μ§œμ— λ“±λ‘λœ TODOκ°€ μ—†μŒ ⚠️

응닡 μ˜ˆμ‹œ:

[
  {
    "id": 123,
    "subject": "HTML κ³΅λΆ€ν•˜κΈ°",
    "eventAt": "2025-04-02",
    "createdAt": "2025-04-01T12:00:00Z"
  },
  {
    "id": 124,
    "subject": "JavaScript λ³΅μŠ΅ν•˜κΈ°",
    "eventAt": "2025-04-02",
    "createdAt": "2025-04-01T13:00:00Z"
  }
]

πŸ”’ 5. νŠΉμ • λ‚ μ§œμ˜ TODO 개수 쑰회

  • μ„€λͺ…: μ§€μ •λœ λ‚ μ§œμ— λ“±λ‘λœ TODO 개수λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • HTTP Method: GET
  • URL: /api/calendar/daily-register-count?date={todoDate}

헀더:

X-USER-ID: μ‚¬μš©μž ID

응닡 μ½”λ“œ:

  • 200 OK: μš”μ²­ 성곡 βœ…
  • 404 Not Found: ν•΄λ‹Ή λ‚ μ§œμ— λ“±λ‘λœ TODOκ°€ μ—†μŒ ⚠️

응닡 μ˜ˆμ‹œ:

{
  "count": 5
}

πŸ” 6. νŠΉμ • ID의 TODO 쑰회

  • μ„€λͺ…: νŠΉμ • ID에 ν•΄λ‹Ήν•˜λŠ” 단일 TODOλ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.
  • HTTP Method: GET
  • URL: /api/calendar/events/{id}

헀더:

X-USER-ID: μ‚¬μš©μž ID

응닡 μ½”λ“œ:

  • 200 OK: μš”μ²­ 성곡 βœ…
  • 404 Not Found: ν•΄λ‹Ή IDκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ ⚠️

응닡 μ˜ˆμ‹œ:

{
  "id": 123,
  "subject": "HTML κ³΅λΆ€ν•˜κΈ°",
  "eventAt": "2025-04-02",
  "createdAt": "2025-04-01T12:00:00Z"
}

πŸ“† 7. μ›” λ‹¨μœ„λ‘œ TODO 리슀트 쑰회

  • μ„€λͺ…: μ§€μ •λœ 연도와 월에 λ“±λ‘λœ λͺ¨λ“  TODOλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • HTTP Method: GET
  • URL: /api/calendar/events/?year={year}&month={month}

헀더:

X-USER-ID: μ‚¬μš©μž ID

응닡 μ½”λ“œ:

  • 200 OK: μš”μ²­ 성곡 βœ…
  • 404 Not Found: ν•΄λ‹Ή 월에 λ“±λ‘λœ TODOκ°€ μ—†μŒ ⚠️

응닡 μ˜ˆμ‹œ:

[
  {
    "id": 123,
    "subject": "HTML κ³΅λΆ€ν•˜κΈ°",
    "eventAt": "2025-04-02",
    "createdAt": "2025-04-01T12:00:00Z"
  },
  {
    "id": 124,
    "subject": "JavaScript λ³΅μŠ΅ν•˜κΈ°",
    "eventAt": "2025-04-03",
    "createdAt": "2025-04-01T13:00:00Z"
  }
]

🚨 μ—λŸ¬ 처리 (Error Handling)

HTTP μƒνƒœ μ½”λ“œμ„€λͺ…
200 OKμš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ 처리됨
201 Createdλ¦¬μ†ŒμŠ€κ°€ μ„±κ³΅μ μœΌλ‘œ 생성됨
204 No Contentμš”μ²­ 성곡, 응닡 λ³Έλ¬Έ μ—†μŒ
400 Bad Request잘λͺ»λœ μš”μ²­ 데이터 ⚠️
403 Forbiddenν•˜λ£¨ μ΅œλŒ€ ν•  일 개수 초과 ❌
404 Not Foundλ¦¬μ†ŒμŠ€λ₯Ό 찾을 수 μ—†μŒ 🚫

0개의 λŒ“κΈ€