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}
);
}