본문 바로가기

카테고리 없음

TIL 요구사항 분석

1. 요구사항 분석

✅ Lv 1. 일정 CRUD

  • 일정 생성(Create), 조회(Read), 수정(Update), 삭제(Delete) 기능 구현
  • 필드:
    • 작성 유저명, 할일 제목, 할일 내용, 작성일, 수정일
    • JPA Auditing을 활용해 작성일 및 수정일 자동 관리

✅ Lv 2. 유저 CRUD

  • 유저 생성, 조회, 수정, 삭제 기능 구현
  • 필드:
    • 유저명, 이메일, 작성일, 수정일 (JPA Auditing 적용)
  • 일정과 유저 연관관계 설정
    • 작성 유저명 대신 유저 고유 식별자로 매핑

✅ Lv 3. 회원가입

  • 유저 테이블에 비밀번호 필드 추가
  • 비밀번호는 평문 저장(암호화는 Lv 6에서 수행)

✅ Lv 4. 로그인(인증)

  • Cookie/Session 기반 로그인 구현
  • 필터 기반 인증 처리
  • @Configuration을 활용하여 필터 등록
  • 이메일과 비밀번호를 검증하여 로그인 처리 (일치하지 않을 경우 401 반환)
  • 회원가입, 로그인 요청은 인증에서 제외

✅ Lv 5. 다양한 예외처리

  • @Valid 및 @Pattern을 활용한 유효성 검사
  • 예제:
    • 할일 제목은 10글자 이내
    • 유저명은 4글자 이내
    • 이메일 정규식 적용

✅ Lv 6. 비밀번호 암호화

  • PasswordEncoder를 직접 만들어 비밀번호 암호화 저장

✅ Lv 7. 댓글 CRUD

  • 일정에 댓글 추가 가능
  • 댓글 생성, 조회, 수정, 삭제 기능 구현
  • 연관관계 설정 (유저 ↔ 댓글, 일정 ↔ 댓글)
  • 필드:
    • 댓글 내용, 작성일, 수정일, 유저 식별자, 일정 식별자 (JPA Auditing 적용)

✅ Lv 8. 일정 페이징 조회

  • Spring Data JPA의 Pageable과 Page 인터페이스 활용
  • PageRequest로 페이징 요청 처리 (기본 페이지 크기: 10)
  • 일정 수정일 기준 내림차순 정렬
  • 조회 필드:
    • 할일 제목, 할일 내용, 댓글 개수, 일정 작성일, 수정일, 일정 작성 유저명

2. 인터페이스 및 클래스 정리

📌 엔티티(Entity)

  • User: 유저 정보 관리
  • Schedule: 일정 정보 관리
  • Comment: 일정의 댓글 정보 관리

📌 DTO (Data Transfer Object)

  • UserDTO: 유저 관련 요청/응답 데이터
  • ScheduleDTO: 일정 관련 요청/응답 데이터
  • CommentDTO: 댓글 관련 요청/응답 데이터
  • LoginRequestDTO: 로그인 요청 데이터

📌 서비스(Service)

  • UserService: 유저 관련 비즈니스 로직 처리
  • ScheduleService: 일정 관련 비즈니스 로직 처리
  • CommentService: 댓글 관련 비즈니스 로직 처리
  • AuthService: 로그인/인증 관련 로직 처리

📌 컨트롤러(Controller)

  • UserController: 유저 관련 엔드포인트 제공
  • ScheduleController: 일정 관련 엔드포인트 제공
  • CommentController: 댓글 관련 엔드포인트 제공
  • AuthController: 로그인 관련 엔드포인트 제공

📌 레포지토리(Repository)

  • UserRepository
  • ScheduleRepository
  • CommentRepository

📌 기타

  • PasswordEncoderUtil: 비밀번호 암호화 기능 제공
  • CustomFilter: 로그인 필터 적용

3. 엔드포인트 정리(api=localhost8080을 생략예정)

🔹 유저 관련 (UserController)

HTTP Method URL 설명

POST /api/users 유저 생성
GET /api/users/{id} 유저 조회
PUT /api/users/{id} 유저 수정
DELETE /api/users/{id} 유저 삭제

🔹 일정 관련 (ScheduleController)

HTTP Method URL 설명

POST /api/schedules 일정 생성
GET /api/schedules/{id} 일정 조회
GET /api/schedules 일정 목록 조회 (페이징)
PUT /api/schedules/{id} 일정 수정
DELETE /api/schedules/{id} 일정 삭제

🔹 로그인 관련 (AuthController)

HTTP Method URL 설명

POST /api/auth/signup 회원가입
POST /api/auth/login 로그인
POST /api/auth/logout 로그아웃

🔹 댓글 관련 (CommentController)

HTTP Method URL 설명

POST /api/comments 댓글 추가
GET /api/comments/{id} 댓글 조회
PUT /api/comments/{id} 댓글 수정
DELETE /api/comments/{id} 댓글 삭제

4. 목적 정리

기능 목적

일정 CRUD 일정의 생성, 조회, 수정, 삭제 기능을 제공하여 사용자가 일정을 관리할 수 있도록 함
유저 CRUD 유저 정보를 생성, 조회, 수정, 삭제할 수 있도록 관리
회원가입 새로운 사용자가 서비스를 이용할 수 있도록 회원가입 기능 제공
로그인 사용자가 인증을 통해 시스템을 이용할 수 있도록 지원
인증 필터 로그인한 사용자만 특정 기능을 사용할 수 있도록 제한
비밀번호 암호화 보안 강화를 위해 비밀번호를 안전하게 저장
댓글 CRUD 일정에 대한 피드백이나 의견을 댓글로 남길 수 있도록 제공
일정 페이징 조회 일정이 많아질 경우 효율적인 데이터 조회를 위해 페이징 처리

 

언제든지 변경가능 합니다 ㅎㅎ