본문으로 건너뛰기

커뮤니티 (댓글 / 좋아요 / 시청 기록)

댓글

⚠️ cb.video.postCommentPOST /v1/public/videos/:videoId/comments 로 보내지만 백엔드의 GET 경로와 충돌해 작성이 불가합니다. 백엔드는 POST /v1/public/comments (body 에 video_id/content/parent_id 전달)에 작성 핸들러를 두고 있습니다 — 정렬 전까지는 raw fetch 를 사용하세요.

typescript
// 댓글 목록 — 동작합니다
const result = await cb.video.getComments('video-id', { limit: 20 })
console.log(result)

// 댓글 삭제 — 동작합니다 (DELETE /v1/public/comments/:id)
await cb.video.deleteComment('comment-id')

raw fetch 로 댓글 작성 (앱 멤버 JWT 필수):

typescript
const res = await fetch('https://api.connectbase.world/v1/public/comments', {
  method: 'POST',
  headers: {
    'X-Public-Key': 'cb_pk_...',
    'Authorization': 'Bearer ' + appMemberToken,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ video_id: 'video-id', content: '좋은 영상이네요!' }),
})
const comment = await res.json()

좋아요

백엔드는 토글 패턴 단일 엔드포인트를 사용합니다 — POST /v1/public/videos/:videoId/like 를 호출할 때마다 좋아요가 토글됩니다.

typescript
// 좋아요 토글 (한 번 호출 = 좋아요, 다시 호출 = 좋아요 취소)
await cb.video.likeVideo('video-id')

// 현재 좋아요 여부 확인
const status = await fetch(
  'https://api.connectbase.world/v1/public/videos/video-id/like/status',
  { headers: { 'X-Public-Key': 'cb_pk_...', 'Authorization': 'Bearer ' + appMemberToken } },
).then((r) => r.json())

⚠️ cb.video.unlikeVideoDELETE /v1/public/videos/:videoId/like 를 호출하지만, 백엔드는 POST (토글) 만 노출합니다. 좋아요 취소는 likeVideo 를 한 번 더 호출하세요.

📌 SDK 에는 isLiked 메서드가 없습니다 — 위 like/status 엔드포인트를 fetch 로 직접 호출해 확인하세요.

시청 기록

⚠️ 현재 SDK 의 시청 기록 메서드는 모두 백엔드에 라우트가 없습니다. cb.video.getWatchHistory, cb.video.clearWatchHistory, cb.video.reportWatchProgress 셋 모두 /v1/public/watch-history 또는 /v1/public/videos/:videoId/watch-progress 를 호출하지만, 백엔드는 해당 라우트를 노출하지 않아 404 가 반환됩니다.

대안으로 자체 tbl_watch_history 테이블에 cb.database 로 직접 기록하거나, 백엔드의 추천 시스템 라우트(/v1/public/recommendations/history 등)를 fetch 로 직접 호출하세요.