Skip to content

Commit 84d4f8c

Browse files
authored
Merge pull request #126 from BaeZzi813/React-양재영-sprint7
[양재영] sprint7
2 parents 84018cd + 6dcd364 commit 84d4f8c

23 files changed

+1727
-32
lines changed

vite-project/package-lock.json

Lines changed: 1257 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vite-project/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
},
1212
"dependencies": {
1313
"axios": "^1.11.0",
14+
"dayjs": "^1.11.18",
1415
"react": "^19.1.0",
1516
"react-dom": "^19.1.0",
1617
"react-responsive": "^10.0.1",
@@ -22,10 +23,13 @@
2223
"@types/react": "^19.1.2",
2324
"@types/react-dom": "^19.1.2",
2425
"@vitejs/plugin-react": "^4.4.1",
26+
"autoprefixer": "^10.4.21",
2527
"eslint": "^9.25.0",
2628
"eslint-plugin-react-hooks": "^5.2.0",
2729
"eslint-plugin-react-refresh": "^0.4.19",
2830
"globals": "^16.0.0",
31+
"postcss": "^8.5.6",
32+
"tailwindcss": "^3.4.17",
2933
"vite": "^6.3.5"
3034
}
3135
}

vite-project/postcss.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default {
2+
plugins: {
3+
tailwindcss: {},
4+
autoprefixer: {},
5+
},
6+
}

vite-project/src/App.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
22
import Nav from "./components/Nav";
33
import ItemsPage from "./pages/ItemsPage/ItemsPage";
44
import AddItemPage from "./pages/AddItemPage/AddItemPage";
5+
import ItemDetailPage from "./pages/ItemDetailPage/ItemDetailPage";
56

67
function App() {
78
return (
@@ -11,6 +12,7 @@ function App() {
1112
<Route path="/" element={<Navigate to="/items" />} />
1213
<Route path="/items" element={<ItemsPage />} />
1314
<Route path="/additem" element={<AddItemPage />} />
15+
<Route path="/items/:productId" element={<ItemDetailPage />} />
1416
</Routes>
1517
</BrowserRouter>
1618
);

vite-project/src/api.jsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,34 @@ export async function getProducts({
1414
throw new Error(`상품을 불러오는데 실패했습니다 : ${error.message}`);
1515
}
1616
}
17+
18+
export async function getProductDetails(productId) {
19+
try {
20+
const response = await instance.get(`/products/${productId}`);
21+
return response.data;
22+
} catch (error) {
23+
throw new Error(`상품을 불러오는데 실패했습니다 : ${error.message}`);
24+
}
25+
}
26+
27+
export async function getProductComments(productId, limit = 5, cursor) {
28+
try {
29+
const params = { limit };
30+
if (cursor) params.cursor = cursor;
31+
const response = await instance.get(`/products/${productId}/comments`, {
32+
params,
33+
});
34+
return response.data;
35+
} catch (error) {
36+
throw new Error(`상품을 불러오는데 실패했습니다 : ${error.message}`);
37+
}
38+
}
39+
40+
export async function postProducts(body) {
41+
try {
42+
const response = await instance.post("/products/", body);
43+
return response.data;
44+
} catch (error) {
45+
throw new Error(`상품을 등록하는데 실패했습니다 : ${error.message}`);
46+
}
47+
}
Lines changed: 17 additions & 0 deletions
Loading
Lines changed: 4 additions & 0 deletions
Loading
Lines changed: 5 additions & 0 deletions
Loading
Lines changed: 24 additions & 0 deletions
Loading

vite-project/src/axiosInstance.jsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,26 @@ const instance = axios.create({
99
},
1010
});
1111

12+
export const ERROR_STATUSCODE_MESSAGES = {
13+
401: "인증이 필요합니다. 로그인 해주세요.",
14+
403: "접근 권한이 없습니다.",
15+
404: "요청하신 리소스를 찾을 수 없습니다.",
16+
500: "서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요.",
17+
};
18+
1219
instance.interceptors.response.use(
1320
(response) => {
1421
return response;
1522
},
1623
(error) => {
1724
if (error.response) {
1825
const status = error.response.status;
19-
20-
if (status === 401) {
21-
alert("인증이 필요합니다. 로그인 해주세요.");
22-
} else if (status === 500) {
23-
alert("서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요.");
24-
}
26+
alert(
27+
ERROR_STATUSCODE_MESSAGES[status] || "알 수 없는 오류가 발생했습니다."
28+
);
2529
} else {
2630
alert("네트워크 오류가 발생했습니다.");
2731
}
28-
2932
return Promise.reject(error);
3033
}
3134
);

0 commit comments

Comments
 (0)