From e7f7a3223497111a7714318b73c2ba93613bf21e Mon Sep 17 00:00:00 2001 From: SproutMj Date: Mon, 27 May 2024 00:15:27 +0900 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20=EB=8F=99=EC=A0=81=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=A0=95=EC=A0=81=20URL=5FBASE=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/next.config.mjs | 8 -------- frontend/src/app/boards/[boardId]/page.tsx | 12 ++++++------ frontend/src/app/boards/modify/[boardId]/page.tsx | 4 ++-- frontend/src/app/boards/page.tsx | 4 ++-- frontend/src/app/chatroom/[chatroomId]/page.tsx | 4 ++-- frontend/src/app/login/page.tsx | 2 +- frontend/src/app/page.tsx | 4 ++-- frontend/src/app/recommend/page.tsx | 10 +++++----- frontend/src/app/scrap/page.tsx | 8 ++++---- frontend/src/app/signup/page.tsx | 2 +- frontend/src/app/user/page.tsx | 8 ++++---- frontend/src/components/ui/header.tsx | 4 ++-- 12 files changed, 31 insertions(+), 39 deletions(-) diff --git a/frontend/next.config.mjs b/frontend/next.config.mjs index 68a9d271..0a7c9af7 100644 --- a/frontend/next.config.mjs +++ b/frontend/next.config.mjs @@ -1,13 +1,5 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - async rewrites() { - return [ - { - source: "/api/:path*", - destination: process.env.NEXT_PUBLIC_API_BASE_URL + "/api/:path*", - }, - ]; - }, }; export default nextConfig; diff --git a/frontend/src/app/boards/[boardId]/page.tsx b/frontend/src/app/boards/[boardId]/page.tsx index 9b396000..63fa7721 100755 --- a/frontend/src/app/boards/[boardId]/page.tsx +++ b/frontend/src/app/boards/[boardId]/page.tsx @@ -49,13 +49,13 @@ export default function BoardDetail({params}: {params: {boardId: string}}) { const router = useRouter(); const fetchComment = useCallback(async () => { - const response = await axios.get(`/api/comments/${params.boardId}`); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/comments/${params.boardId}`); setComments(response.data.map((c: Comment) => (c))); }, [params.boardId]); useEffect(() => { const fetchBoard = async () => { - const response = await axios.get(`/api/boards/${params.boardId}`); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/boards/${params.boardId}`); setTitle(response.data.title); setContent(response.data.content); setCreatedTime(response.data.createdTime); @@ -71,7 +71,7 @@ export default function BoardDetail({params}: {params: {boardId: string}}) { boardId: boardId, content: comment, } - const response = await axios.post('/api/comments', commentDto); + const response = await axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/comments`, commentDto); setComment(''); await fetchComment(); } @@ -87,7 +87,7 @@ export default function BoardDetail({params}: {params: {boardId: string}}) { content: modifyComment, } - const response = await axios.patch('/api/comments', commentDto); + const response = await axios.patch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/comments`, commentDto); await fetchComment(); restoreModifyComment(); } @@ -97,12 +97,12 @@ export default function BoardDetail({params}: {params: {boardId: string}}) { } const handleDeleteComment = async (id: number) => { - const response = await axios.delete(`/api/comments/${id}`); + const response = await axios.delete(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/comments/${id}`); await fetchComment(); } const handleDeleteBoard = async () => { - const response = await axios.delete(`/api/boards/${boardId}`); + const response = await axios.delete(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/boards/${boardId}`); await router.push('/boards'); } diff --git a/frontend/src/app/boards/modify/[boardId]/page.tsx b/frontend/src/app/boards/modify/[boardId]/page.tsx index b8609eb0..5ecce061 100755 --- a/frontend/src/app/boards/modify/[boardId]/page.tsx +++ b/frontend/src/app/boards/modify/[boardId]/page.tsx @@ -33,7 +33,7 @@ export default function BoardWriting({params}: {params: {boardId: string}}) { useEffect(()=>{ const fetchBoard = async ()=> { - const response = await axios.get(`/api/boards/${params.boardId}`); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/boards/${params.boardId}`); setTitle(response.data.title); setContent(response.data.content); }; @@ -43,7 +43,7 @@ export default function BoardWriting({params}: {params: {boardId: string}}) { const handleBoardModify = async ()=>{ try { - const response = await axios.put('/api/boards', { + const response = await axios.put(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/boards`, { id: params.boardId, title: title, content: content, diff --git a/frontend/src/app/boards/page.tsx b/frontend/src/app/boards/page.tsx index 6dcc9b76..9deb4eff 100755 --- a/frontend/src/app/boards/page.tsx +++ b/frontend/src/app/boards/page.tsx @@ -45,13 +45,13 @@ export default function Board() { try { let response; if(searchKeyword === null){ - response = await axios.get('/api/boards', { + response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/boards`, { params: { page: page, } }); }else{ - response = await axios.get('/api/boards', { + response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/boards`, { params: { page: page, searchKeyword: searchKeyword diff --git a/frontend/src/app/chatroom/[chatroomId]/page.tsx b/frontend/src/app/chatroom/[chatroomId]/page.tsx index 52441c4a..6f21c59e 100644 --- a/frontend/src/app/chatroom/[chatroomId]/page.tsx +++ b/frontend/src/app/chatroom/[chatroomId]/page.tsx @@ -33,7 +33,7 @@ export default function ChatRoom({ params }: { params: { chatroomId: number } }) recipe: recipe, }; try { - const response = await axios.post('/api/recipe/save-chat', chatRecipeRequestDto); + const response = await axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recipe/save-chat`, chatRecipeRequestDto); console.log('Recipe saved successfully:', response.data); handleRoutingScrap(); } catch (error) { @@ -43,7 +43,7 @@ export default function ChatRoom({ params }: { params: { chatroomId: number } }) useEffect(() => { - axios.get(`/api/chatroom/${params.chatroomId}`) + axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/chatroom/${params.chatroomId}`) .then(response => { const messagesWithBr = response.data.map(message => ({ ...message, diff --git a/frontend/src/app/login/page.tsx b/frontend/src/app/login/page.tsx index c4dba01a..09120e9e 100644 --- a/frontend/src/app/login/page.tsx +++ b/frontend/src/app/login/page.tsx @@ -38,7 +38,7 @@ export default function Login() { const handleLogin = async () => { try { - const response = await fetch('/api/login', { + const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/login`, { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index d709255a..943061b7 100755 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -41,7 +41,7 @@ export default function Main() { useEffect(() => { const fetchChatRooms = async () => { try { - const response = await axios.get("/api/chatrooms"); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/chatrooms`); setChatRooms(response.data); } catch (error) { console.error("Error fetching chat rooms:", error); @@ -58,7 +58,7 @@ export default function Main() { const handleDeleteClick = async (chatId: number) => { try { - await axios.delete(`/api/chatroom/${chatId}`); + await axios.delete(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/chatroom/${chatId}`); setChatRooms(chatRooms.filter(chat => chat.chatId !== chatId)); } catch (error) { console.error("Error deleting chat room:", error); diff --git a/frontend/src/app/recommend/page.tsx b/frontend/src/app/recommend/page.tsx index 4d587a30..bc01900f 100755 --- a/frontend/src/app/recommend/page.tsx +++ b/frontend/src/app/recommend/page.tsx @@ -67,7 +67,7 @@ export default function Recommend() { setIsLoading(true); // 로딩 시작 console.log(middleIngredients) try { - const response = await axios.post('/api/recommendation-menu', middleIngredients); + const response = await axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recommendation-menu`, middleIngredients); const data = response.data; setMenus(data); handleNextStep(); @@ -84,7 +84,7 @@ export default function Recommend() { recipe: recipeString, }; try { - const response = await axios.post('/api/recipe/save-chat', chatRecipeRequestDto); + const response = await axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recipe/save-chat`, chatRecipeRequestDto); console.log('Recipe saved successfully:', response.data); handleRoutingScrap(); } catch (error) { @@ -100,7 +100,7 @@ export default function Recommend() { ingredients: middleIngredients.split(', '), }; try { - const response = await axios.post('/api/recommendation-recipe-str', request); + const response = await axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recommendation-recipe-str`, request); setRecipeString(response.data); const newRecipeLink = `https://www.10000recipe.com/recipe/list.html?q=${encodeURIComponent(menu)}`; setRecipeLink(newRecipeLink); @@ -164,7 +164,7 @@ export default function Recommend() { }; console.log(chatRoomRequestDto); - axios.post('/api/recommendation-save', chatRoomRequestDto) + axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recommendation-save`, chatRoomRequestDto) .then(response => { console.log('Chat data saved successfully:', response.data); }) @@ -190,7 +190,7 @@ export default function Recommend() { try { setIsLoading(true); - const response = await fetch('/api/photo-recognition', { + const response = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/photo-recognition`, { method: 'POST', body: formData, }); diff --git a/frontend/src/app/scrap/page.tsx b/frontend/src/app/scrap/page.tsx index 15ddad00..75fbfc45 100755 --- a/frontend/src/app/scrap/page.tsx +++ b/frontend/src/app/scrap/page.tsx @@ -49,7 +49,7 @@ export default function Scrap() { const handleLogout = async () => { try { // 로그아웃 요청 보내기 - await axios.post('/api/logout'); + await axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/logout`); // 로그아웃 후 로그인 페이지로 이동 router.push('/login'); } catch (error) { @@ -62,7 +62,7 @@ export default function Scrap() { useEffect(() => { const fetchRecipes = async () => { try { - const response = await axios.get("/api/recipes"); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recipes`); setRecipes(response.data); } catch (error) { console.error("Error fetching recipes:", error); @@ -74,7 +74,7 @@ export default function Scrap() { const handleLearnMoreClick = async (recipeId: number) => { try { - const response = await axios.get(`/api/recipe/${recipeId}`); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recipe/${recipeId}`); const recipeDetails: RecipeDetail = response.data; setSelectedRecipe({ @@ -90,7 +90,7 @@ export default function Scrap() { const handleDeleteClick = async () => { if (recipeToDelete !== null) { try { - await axios.delete(`/api/recipe/${recipeToDelete}`); + await axios.delete(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/recipe/${recipeToDelete}`); setRecipes(recipes.filter(recipe => recipe.recipeId !== recipeToDelete)); closeModal(); } catch (error) { diff --git a/frontend/src/app/signup/page.tsx b/frontend/src/app/signup/page.tsx index b4254818..0284967f 100644 --- a/frontend/src/app/signup/page.tsx +++ b/frontend/src/app/signup/page.tsx @@ -44,7 +44,7 @@ export default function SignUp() { async function signUp() { const userName = id; - const res = await fetch('/api/signup',{ + const res = await fetch(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/signup`,{ method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/frontend/src/app/user/page.tsx b/frontend/src/app/user/page.tsx index d8deb384..05111fe0 100644 --- a/frontend/src/app/user/page.tsx +++ b/frontend/src/app/user/page.tsx @@ -61,7 +61,7 @@ export default function UserPage() { newUserName }; try { - const response = await axios.put('/api/user/change-userName', data); + const response = await axios.put(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/user/change-userName`, data); if (response.data && response.data.statuscode === 200) { setChangeUserNameModalOpen(false); setUserDetail(prevDetail => (prevDetail ? { ...prevDetail, userName: newUserName } : null)); @@ -88,7 +88,7 @@ export default function UserPage() { newPassword }; try { - const response = await axios.put('/api/user/change-password', data); + const response = await axios.put(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/user/change-password`, data); if (response.data && response.data.statuscode === 200) { setChangePasswordModalOpen(false); window.alert(response.data.msg); // 성공 메시지 표시 @@ -114,7 +114,7 @@ export default function UserPage() { }; try { - const response = await axios.delete('/api/user', { data }); + const response = await axios.delete(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/user`, { data }); if (response.data && response.data.statuscode === 200) { setChangeUserNameModalOpen(false); window.alert(response.data.msg); // 성공 메시지 표시 @@ -131,7 +131,7 @@ export default function UserPage() { useEffect(() => { const fetchUserDetail = async () => { try { - const response = await axios.get('/api/user-detail'); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/user-detail`); setUserDetail(response.data); } catch (error) { console.error('Error fetching user details:', error); diff --git a/frontend/src/components/ui/header.tsx b/frontend/src/components/ui/header.tsx index 1f3c7a4e..970b6186 100644 --- a/frontend/src/components/ui/header.tsx +++ b/frontend/src/components/ui/header.tsx @@ -15,7 +15,7 @@ export const Header = () => { useEffect(()=> { const fetchUser = async ()=> { try { - const response = await axios.get('/api/current-user'); + const response = await axios.get(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/current-user`); setUser(response.data); }catch (e: any){ if(e.response.status === 401){ @@ -30,7 +30,7 @@ export const Header = () => { const handleLogout = async () => { try { - await axios.post('/api/logout'); + await axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/logout`); clearUser(); router.push('/login'); } catch (error) { From bf3f1595b6306e81f66d7571885d6f6502203647 Mon Sep 17 00:00:00 2001 From: SproutMj Date: Mon, 27 May 2024 00:24:49 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20cors=20=EC=9A=94=EC=B2=AD=20?= =?UTF-8?q?=ED=95=B4=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/hello/aimju/login/config/WebConfig.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/hello/aimju/login/config/WebConfig.java b/backend/src/main/java/hello/aimju/login/config/WebConfig.java index b544bb23..b9ffd365 100644 --- a/backend/src/main/java/hello/aimju/login/config/WebConfig.java +++ b/backend/src/main/java/hello/aimju/login/config/WebConfig.java @@ -34,9 +34,9 @@ public void addInterceptors(InterceptorRegistry registry) { @Override public void addCorsMappings(CorsRegistry registry) { -// registry.addMapping("/**") // 모든 요청에 대해 CORS 허용 -// .allowedOrigins("*") // 모든 Origin(도메인) 허용. 실제 운영 환경에서는 특정 Origin으로 제한할 것을 권장 -// .allowedMethods("*") // 모든 HTTP 메서드 허용 (GET, POST, PUT, DELETE 등) -// .allowedHeaders("*"); // 모든 요청 헤더 허용 + registry.addMapping("/**") // 모든 요청에 대해 CORS 허용 + .allowedOrigins("*") // 모든 Origin(도메인) 허용. 실제 운영 환경에서는 특정 Origin으로 제한할 것을 권장 + .allowedMethods("*") // 모든 HTTP 메서드 허용 (GET, POST, PUT, DELETE 등) + .allowedHeaders("*"); // 모든 요청 헤더 허용 } }