일정 관리 앱 Develop

coldrice99·2024년 10월 17일
0

프로젝트 결과물 제출

지난 일정 관리 프로젝트에 이어서, 이번에는 더 발전된 일정 관리 API를 JPA와 Spring Boot를 활용해 구현하였다. 이번 프로젝트에서는 더 다양한 기능을 추가하고, 보안과 데이터 관리를 강화하여 더욱 견고한 시스템을 구축하는 데 중점을 두었다. 주요 기능으로는 일정 CRUD, 댓글 CRUD, 페이지네이션, 사용자 검증 및 비밀번호 검증 등이 포함된다. 프로젝트는 트러블 슈팅 과정을 통해 문제를 해결하며 완성되었으며, 각 기능별 구현 사항과 API 명세서는 아래와 같다.

구현된 기능

  1. 일정 CRUD

    • 일정 생성, 조회, 수정, 삭제 기능을 구현하였다.
    • 댓글이 달린 일정의 경우, 일정 삭제 시 댓글도 함께 삭제되도록 영속성 전이를 설정하였다.
  2. 댓글 CRUD

    • 댓글을 일정에 추가하고, 조회, 수정, 삭제할 수 있도록 구현하였다.
    • 페이지네이션을 통해 특정 일정에 달린 댓글을 효율적으로 조회할 수 있도록 하였다.
  3. 사용자 검증 및 비밀번호 검증

    • 일정 수정 및 삭제 시 작성자를 검증하고 비밀번호가 일치하는지 확인하여 보안성을 강화하였다.
  4. 페이지네이션 및 정렬

    • 일정 및 댓글 조회 시 페이지네이션을 적용하여 데이터를 효율적으로 조회할 수 있게 하였다.
    • 일정은 수정일을 기준으로 내림차순 정렬되도록 설정하였다.
  5. 다양한 예외 처리

    • @Valid와 @NotNull, @Pattern 등의 어노테이션을 사용해 요청 데이터의 유효성을 검사하고, 적절한 예외 처리 로직을 구현하였다.

API 명세서

API 명칭메서드요청 URL요청 헤더요청 본문응답 코드설명응답 본문
일정 생성POST/api/todoContent-Type: application/jsonjson {"memberId":1,"title":"할 일 제목","password":"securePassword123","description":"이 할 일에 대한 설명입니다."}201일정 생성 성공json {"id":1,"memberId":1,"title":"할 일 제목","description":"이 할 일에 대한 설명입니다.","createdAt":"2024-10-03","updatedAt":"2024-10-03"}
전체 일정 조회GET/api/todoContent-Type: application/jsonN/A200전체 일정 조회 성공json [{"id":1,"memberId":1,"title":"할 일 제목","description":"이 할 일에 대한 설명입니다.","commentCount":2,"createdAt":"2024-10-03","updatedAt":"2024-10-03"}...]
선택 일정 조회GET/api/todo/{todoId}Content-Type: application/jsonN/A200선택 일정 조회 성공json {"id":1,"memberId":1,"title":"할 일 제목","description":"이 할 일에 대한 설명입니다.","createdAt":"2024-10-03","updatedAt":"2024-10-03"}
일정 수정PUT/api/todo/{todoId}Content-Type: application/jsonjson {"memberId":1,"password":"securePassword123","description":"수정된 내용"}204일정 수정 성공N/A
일정 삭제DELETE/api/todo/{todoId}Content-Type: application/jsonjson {"memberId":1,"password":"securePassword123"}204일정 삭제 성공N/A
댓글 생성POST/api/commentsContent-Type: application/jsonjson {"memberId":1,"todoId":1,"content":"댓글 내용"}201댓글 생성 성공json {"id":1,"content":"댓글 내용","memberId":1,"createdAt":"2024-10-03","updatedAt":"2024-10-03"}
댓글 조회GET/api/comments/{todoId}Content-Type: application/jsonN/A200댓글 조회 성공json [{"id":1,"content":"댓글 내용","memberId":1,"createdAt":"2024-10-03","updatedAt":"2024-10-03"}...]
댓글 수정PUT/api/comments/{commentId}Content-Type: application/jsonjson {"content":"수정된 댓글 내용"}204댓글 수정 성공N/A
댓글 삭제DELETE/api/comments/{commentId}Content-Type: application/jsonjson {"memberId":1}204댓글 삭제 성공N/A

교훈

  • 이번 프로젝트에서는 JPA를 통해 엔티티 간의 연관 관계를 설정하고 페이지네이션, 유효성 검증 등의 기능을 적용하면서 Spring Boot의 다양한 기능을 경험할 수 있었다. 트러블 슈팅 과정을 통해 문제 해결 능력을 향상시킬 수 있었으며, 특히 비밀번호 검증 및 작성자 검증 로직을 통해 보안성을 강화할 수 있었다.

https://github.com/coldrice99/ScheduleMangerApp_Develop.git

profile
서두르지 않으나 쉬지 않고

0개의 댓글