Course Management API
수강 관리
개요
온라인 강의 플랫폼을 위한 수강 관리 API를 설계하세요. 사용자는 강의를 수강할 수 있으며, 강의에는 여러 개의 강의 영상이 포함됩니다. 수강을 완료한 강의는 완료 상태로 변경할 수 있으며, 사용자는 수강한 강의를 조회할 수 있습니다.
요구사항
강의 등록: 관리자가 새로운 강의를 등록할 수 있어야 합니다.
강의 영상 등록: 등록된 강의에 여러 개의 강의 영상을 추가할 수 있어야 합니다.
강의 목록 조회: 사용자는 수강 가능한 강의 목록을 조회할 수 있어야 합니다.
강의 수강 신청: 사용자는 특정 강의를 수강 신청할 수 있어야 합니다.
수강 중인 강의 목록 조회: 사용자는 자신이 수강 중인 강의 목록을 조회할 수 있어야 합니다.
수강 완료 처리: 사용자는 자신이 수강한 강의를 완료 상태로 변경할 수 있어야 합니다.
완료한 강의 목록 조회: 사용자는 자신이 완료한 강의 목록을 조회할 수 있어야 합니다.
1. 엔드포인트 설계
강의 등록(POST) - /courses
강의 영상 등록(POST) - /courses/{courseId}/videos
강의 목록 조회(GET) - /courses
강의 수강 신청(POST) - /courses/{courseId}/subscriptions
수강 중인 강의 목록 조회(GET) - /users/{userId}courses
수강 완료 처리(PATCH) - /users/{userId}/courses/{courseId}/status
완료한 강의 목록 조회(GET) - /user/{userId}courses?status=completed
2. 요청/응답 구조 설계
강의 등록
강의 영상 등록(POST) - /courses/{courseId}/clips
강의 목록 조회(GET) - /courses
강의 수강 신청(POST) - users/{userId}/courses/{courseId}/subscriptions
수강 중인 강의 목록 조회(GET) - /users/{userId}/courses
수강 완료 처리(PATCH) - /users/{userId}/courses/{courseId}/status
완료한 강의 목록 조회(GET) - /user/{userId}courses?status=completed
3. DB 모델링
user
id. BIGINT, PK. 유저 id
role. VARCHAR. 역할 (user, lecturer)
user_courses
id. BIGINT, PK. 유저-강의 id
user_id. BIGINT, FK. 유저 id
course_id. BIGINT, FK. 강의 id
status. VARCHAT(255). 상태
created_at. DATETIME. 생성일
modified_at. DATETIME. 수정일
courses
id. BIGINT, PK. 강의 id
user_id. BIGINT, FK. 유저 id
course_name. VARCHAR(255). 강의 이름
4. 아키텍처 고려
GET /courses
는 자주 조회되는 API이므로 Redis 캐싱을 고려해야 함.강사 정보도 자주 조회된다면 캐싱 필요.
캐싱 적용 가능 부분
강의 목록 캐싱 (
GET /courses
)강사 정보 캐싱 (
GET /users/{userId}
)사용자 수강 강의 캐싱 (
GET /users/{userId}/courses
)
Last updated