diff --git a/docs/api.md b/docs/api.md index 68b5a4d..061a1a1 100644 --- a/docs/api.md +++ b/docs/api.md @@ -46,7 +46,7 @@ }; ``` -**GET** `/api/content/:content_id` +**GET** `/api/contents/:content_id` - response ```JSON diff --git a/src/app/api/contents/[content_id]/route.js b/src/app/api/contents/[content_id]/route.js index a3d6817..5ab9a05 100644 --- a/src/app/api/contents/[content_id]/route.js +++ b/src/app/api/contents/[content_id]/route.js @@ -5,7 +5,7 @@ export async function GET(req, { params }) { const db = await getDB(); const item = await db .collection("content") - .findOne({ id: params.content_id }); + .findOne({ id: Number(params.content_id) }); if (!item) { return NextResponse.json( { code: 20, message: "Content not found" }, diff --git a/src/app/play/[contents_id]/page.js b/src/app/play/[content_id]/page.js similarity index 61% rename from src/app/play/[contents_id]/page.js rename to src/app/play/[content_id]/page.js index 566ef9a..df4f3c9 100644 --- a/src/app/play/[contents_id]/page.js +++ b/src/app/play/[content_id]/page.js @@ -1,11 +1,11 @@ import PlayContainer from "src/components/Play/PlayContainer/PlayContainer.js"; export default function Play(props) { - var contentId = props.params.contents_id; + const contentNumber = props.params.content_id; return (
- +
); } diff --git a/src/components/Play/Comments/Comments.js b/src/components/Play/Comments/Comments.js index de7cd97..505c582 100644 --- a/src/components/Play/Comments/Comments.js +++ b/src/components/Play/Comments/Comments.js @@ -5,9 +5,9 @@ import { useState } from "react"; import "./Comments.css"; export default function Comments(props) { - // var commentsId = props.commentsId; - var content = contentsData[props.commentsId]; - var comments = content.comments; + var comments = props.content.comments; + // var content = contentsData[props.commentsId]; + // var comments = content.comments; var [newComment, setNewComment] = useState(""); @@ -20,7 +20,7 @@ export default function Comments(props) { placeholder="댓글을 작성하세요" value={newComment} onChange={(e) => { - setComment(e.target.value); + setNewComment(e.target.value); }} > @@ -35,7 +35,7 @@ export default function Comments(props) { placeholder="댓글을 작성하세요" value={newComment} onChange={(e) => { - setComment(e.target.value); + setNewComment(e.target.value); }} > {comments.map((a, index) => { diff --git a/src/components/Play/PlayContainer/PlayContainer.js b/src/components/Play/PlayContainer/PlayContainer.js index c2dbb9e..131f218 100644 --- a/src/components/Play/PlayContainer/PlayContainer.js +++ b/src/components/Play/PlayContainer/PlayContainer.js @@ -1,20 +1,38 @@ +"use client"; + import Player from "src/components/Play/Player/Player.js"; import Comments from "src/components/Play/Comments/Comments.js"; import "./PlayContainer.css"; -import contentsData from "src/mock/contents.json"; +import { useState, useEffect } from "react"; export default function PlayContainer(props) { - var id = props.id; - let content = contentsData[id]; + const [contentData, setContentData] = useState(null); + + useEffect(() => { + const id = props.contentId; + const apiUrl = `/api/contents/${id}`; // 서버 API 엔드포인트 URL + + fetch(apiUrl) + .then((response) => response.json()) + .then((parsedResponse) => { + setContentData(parsedResponse); + console.log(contentData); + }) + .catch((error) => { + console.error("Error fetching data:", error); + }); + }, []); - if (content.type != "youtube") { + if (contentData === undefined) { + return

Loading..

; + } else if (contentData && contentData.type !== "youtube") { return
잘못된 접근입니다
; } return (
- - + +
); } diff --git a/src/components/Play/Player/Player.js b/src/components/Play/Player/Player.js index e11448e..0d8a208 100644 --- a/src/components/Play/Player/Player.js +++ b/src/components/Play/Player/Player.js @@ -1,9 +1,9 @@ -import contentsData from "src/mock/contents.json"; import "./Player.css"; export default function Player(props) { - var playerId = props.playerId; - var video = contentsData[playerId]; + var video = props.content; + // var playerId = props.playerId; + // var video = contentsData[playerId]; return (
@@ -17,7 +17,7 @@ export default function Player(props) { allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen > -

{video.title}

+

{props.content.title}

); }