Skip to content

Commit fb0ec26

Browse files
authored
[#106] 프론트 axios instance 분리 (#107)
* feat: axios instance baseURL 주소 변경 * feat: axios instance 변경 * feat: 누락된 axios instance 추가 * chore: 환경변수 타입 선언 삭제 * chore: 불필요 파일 삭제
1 parent 57931b9 commit fb0ec26

File tree

23 files changed

+135
-132
lines changed

23 files changed

+135
-132
lines changed

apps/next-client/src/app/api/medicine/route.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import axios, { AxiosResponse } from 'axios';
1+
import { AxiosResponse } from 'axios';
2+
import { axiosInstance } from '@/services/axiosInstance';
23
import { NextResponse } from 'next/server';
34
import { XMLParser } from 'fast-xml-parser';
45
import { SEARCH_ERROR_MESSAGES } from '@/constants/search_errors';
@@ -54,7 +55,7 @@ async function fetchMedicineInfo(name: string, pageNo: number, numOfRows: number
5455
const url = `http://apis.data.go.kr/1471000/MdcinGrnIdntfcInfoService01/getMdcinGrnIdntfcInfoList01?ServiceKey=${MEDI_DATA_API_KEY}`;
5556

5657
try {
57-
const response = await axios.get(url, {
58+
const response = await axiosInstance.get(url, {
5859
params: { item_name: name, pageNo, numOfRows },
5960
responseType: 'text',
6061
});

apps/next-client/src/app/community/[id]/edit/page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import React, { useEffect, useState, useMemo } from 'react';
44
import { useRouter } from 'next/navigation';
5-
import axios from 'axios';
5+
import { axiosInstance } from '@/services/axiosInstance';
66
import dynamic from 'next/dynamic';
77
import { useSession } from 'next-auth/react';
88
import { API_URLS } from '@/constants/urls';
@@ -26,7 +26,7 @@ export default function EditPostPage({ params }: { params: { id: string } }) {
2626
useEffect(() => {
2727
const fetchPost = async () => {
2828
try {
29-
const response = await axios.get(`${API_URLS.POSTS}/${id}`);
29+
const response = await axiosInstance.get(`${API_URLS.POSTS}/${id}`);
3030
const post = response.data;
3131

3232
if (post.userId !== userId) {
@@ -93,7 +93,7 @@ export default function EditPostPage({ params }: { params: { id: string } }) {
9393
return;
9494
}
9595

96-
await axios.put(
96+
await axiosInstance.put(
9797
`${API_URLS.POSTS}/${id}`,
9898
{ title, content },
9999
{ headers: { Authorization: `Bearer ${accessToken}` } }
@@ -111,7 +111,7 @@ export default function EditPostPage({ params }: { params: { id: string } }) {
111111
try {
112112
if (!window.confirm('정말 삭제하시겠습니까?')) return;
113113

114-
await axios.delete(`${API_URLS.POSTS}/${id}`, {
114+
await axiosInstance.delete(`${API_URLS.POSTS}/${id}`, {
115115
headers: { Authorization: `Bearer ${accessToken}` },
116116
});
117117

apps/next-client/src/app/community/[id]/page.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
import React, { useEffect, useState, useCallback } from 'react';
44
import { useRouter } from 'next/navigation';
5-
import axios from 'axios';
65
import { useSession } from 'next-auth/react';
76
import { API_URLS } from '@/constants/urls';
87
import '@/styles/pages/community/community.scss';
98
import { Params, Post, Comment } from '@/types/post';
109
import { FaThumbsUp, FaRegThumbsUp } from "react-icons/fa6";
1110
import Link from 'next/link';
1211
import { ALERT_MESSAGES } from '@/constants/alert_message';
12+
import { axiosInstance } from '@/services/axiosInstance';
1313

1414
export default function PostDetailPage({ params }: { params: Params }) {
1515
const { id } = params;
@@ -30,7 +30,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
3030
// 게시글 정보 가져오기
3131
const fetchPost = useCallback(async () => {
3232
try {
33-
const response = await axios.get(`${API_URLS.POSTS}/${id}`);
33+
const response = await axiosInstance.get(`${API_URLS.POSTS}/${id}`);
3434
setPost(response.data);
3535
} catch (error) {
3636
console.error('Error fetching post:', error);
@@ -41,7 +41,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
4141
// 댓글 목록 가져오기
4242
const fetchComments = useCallback(async () => {
4343
try {
44-
const response = await axios.get(`${API_URLS.POSTS}/${id}/comments`);
44+
const response = await axiosInstance.get(`${API_URLS.POSTS}/${id}/comments`);
4545
setComments(response.data);
4646
} catch (error) {
4747
console.error('Error fetching comments:', error);
@@ -53,7 +53,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
5353
const fetchRecommendation = useCallback(async () => {
5454
try {
5555
// 토큰 포함
56-
const response = await axios.get(
56+
const response = await axiosInstance.get(
5757
`${API_URLS.POSTS}/${id}/recommend`,
5858
{ headers: { Authorization: `Bearer ${accessToken}` } }
5959
);
@@ -75,7 +75,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
7575
try {
7676
if (!window.confirm(ALERT_MESSAGES.CONFIRM.CHECK_DELETE)) return;
7777

78-
await axios.delete(`${API_URLS.POSTS}/${id}`, {
78+
await axiosInstance.delete(`${API_URLS.POSTS}/${id}`, {
7979
headers: { Authorization: `Bearer ${accessToken}` },
8080
});
8181

@@ -95,7 +95,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
9595
return;
9696
}
9797

98-
await axios.post(
98+
await axiosInstance.post(
9999
`${API_URLS.POSTS}/${id}/comments`,
100100
{ content: newComment },
101101
{ headers: { Authorization: `Bearer ${accessToken}` } }
@@ -114,7 +114,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
114114
try {
115115
if (!window.confirm(ALERT_MESSAGES.CONFIRM.CHECK_DELETE)) return;
116116

117-
await axios.delete(`${API_URLS.POSTS}/comments/${commentId}`, {
117+
await axiosInstance.delete(`${API_URLS.POSTS}/comments/${commentId}`, {
118118
headers: { Authorization: `Bearer ${accessToken}` },
119119
});
120120

@@ -140,7 +140,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
140140
return;
141141
}
142142

143-
await axios.put(
143+
await axiosInstance.put(
144144
`${API_URLS.POSTS}/comments/${commentId}`,
145145
{ content: editedComment },
146146
{ headers: { Authorization: `Bearer ${accessToken}` } }
@@ -160,7 +160,7 @@ export default function PostDetailPage({ params }: { params: Params }) {
160160
// 추천 토글
161161
const toggleRecommendation = async () => {
162162
try {
163-
const response = await axios.post(
163+
const response = await axiosInstance.post(
164164
`${API_URLS.POSTS}/${id}/recommend`,
165165
{},
166166
{ headers: { Authorization: `Bearer ${accessToken}` } }

apps/next-client/src/app/community/create/page.tsx

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
"use client";
1+
'use client';
22

3-
import React, { useState, useCallback, useMemo } from "react";
4-
import dynamic from "next/dynamic";
5-
import type Quill from "quill";
6-
7-
import axios from "axios";
8-
import Cookies from "js-cookie";
9-
import { useRouter } from "next/navigation";
10-
import { API_URLS } from "@/constants/urls";
11-
import "react-quill/dist/quill.snow.css";
12-
import "@/styles/pages/community/community.scss";
13-
import { ALERT_MESSAGES } from "@/constants/alert_message";
3+
import React, { useState, useCallback, useMemo } from 'react';
4+
import dynamic from 'next/dynamic';
5+
import type Quill from 'quill';
6+
import { axiosInstance } from '@/services/axiosInstance';
7+
import Cookies from 'js-cookie';
8+
import { useRouter } from 'next/navigation';
9+
import { API_URLS } from '@/constants/urls';
10+
import 'react-quill/dist/quill.snow.css';
11+
import '@/styles/pages/community/community.scss';
12+
import { ALERT_MESSAGES } from '@/constants/alert_message';
1413

1514
// ReactQuill 동적 로드 (SSR 비활성화)
1615
const ReactQuill = dynamic(() => import("react-quill"), { ssr: false });
@@ -35,7 +34,7 @@ export default function CreatePost() {
3534
formData.append("image", file);
3635

3736
// 업로드 요청
38-
const response = await axios.post(API_URLS.UPLOADS, formData, {
37+
const response = await axiosInstance.post(API_URLS.UPLOADS, formData, {
3938
headers: {
4039
"Content-Type": "multipart/form-data",
4140
Authorization: `Bearer ${Cookies.get("accessToken")}`,
@@ -107,7 +106,7 @@ export default function CreatePost() {
107106
return;
108107
}
109108
try {
110-
await axios.post(API_URLS.POSTS, newPost, {
109+
await axiosInstance.post(API_URLS.POSTS, newPost, {
111110
headers: {
112111
Authorization: `Bearer ${Cookies.get("accessToken")}`,
113112
},

apps/next-client/src/app/community/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use client';
22

33
import React, { useEffect, useState, useCallback } from 'react';
4-
import axios from 'axios';
4+
import { axiosInstance } from '@/services/axiosInstance';
55
import Link from 'next/link';
66
import Cookies from 'js-cookie';
77
import { useRouter } from 'next/navigation';
@@ -33,7 +33,7 @@ export default function CommunityList() {
3333

3434
const fetchPosts = useCallback(async (page: number = 1) => {
3535
try {
36-
const response = await axios.get(
36+
const response = await axiosInstance.get(
3737
`${API_URLS.POSTS}?page=${page}&limit=${postsPerPage}&search=${searchTerm}`
3838
);
3939
setPosts(response.data.posts);

apps/next-client/src/app/mypage/page.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
"use client";
1+
'use client';
22

3-
import React, { useState } from "react";
4-
import "@/styles/pages/mypage/edit.scss";
5-
import "@/styles/pages/search/search.scss";
6-
import UserInfo from "@/components/mypage/UserInfo";
7-
import UserBookmark from "@/components/mypage/UserBookmark";
3+
import React, { useState } from 'react';
4+
import '@/styles/pages/mypage/edit.scss';
5+
import '@/styles/pages/search/search.scss';
6+
import UserInfo from '@/components/mypage/UserInfo';
7+
import UserBookmark from '@/components/mypage/UserBookmark';
88

99
export default function MyPage() {
1010
const [activeTab, setActiveTab] = useState<"userInfo" | "userBookmark">("userInfo");

apps/next-client/src/app/page.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
"use client";
1+
'use client';
22

3-
import React, { useState, ChangeEvent, KeyboardEvent } from "react";
4-
import { useRouter } from "next/navigation";
5-
import Image from "next/image";
6-
import "@/styles/pages/main.scss";
3+
import React, { useState, ChangeEvent, KeyboardEvent } from 'react';
4+
import { useRouter } from 'next/navigation';
5+
import Image from 'next/image';
6+
import '@/styles/pages/main.scss';
77

88
export default function Home() {
99
const [searchTerm, setSearchTerm] = useState("");

apps/next-client/src/app/pharmacy/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"use client";
1+
'use client';
22

33
import React, { useEffect, useState, useCallback } from 'react';
44
import '@/styles/pages/pharmacy/pharmacy.scss';

apps/next-client/src/app/search/[id]/page.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
"use client";
2-
3-
import React, { useEffect, useState } from "react";
4-
import { useParams } from "next/navigation";
5-
import axios from "axios";
6-
import Link from "next/link";
7-
import Image from "next/image";
8-
import "@/styles/pages/search/search.scss";
9-
import MedicineInfo from "@/components/medicineDetail/MedicineInfo";
10-
import { MedicineResultDto } from "@/dto/MedicineResultDto";
11-
import { API_URLS } from "@/constants/urls";
12-
import { addFavoriteApi, checkFavoriteApi } from "@/utils/medicineFavorites";
13-
import { ScrollToTopButton } from "@/components/common/ScrollToTopButton";
1+
'use client';
2+
3+
import React, { useEffect, useState } from 'react';
4+
import { useParams } from 'next/navigation';
5+
import axios from 'axios';
6+
import Link from 'next/link';
7+
import Image from 'next/image';
8+
import '@/styles/pages/search/search.scss';
9+
import MedicineInfo from '@/components/medicineDetail/MedicineInfo';
10+
import { MedicineResultDto } from '@/dto/MedicineResultDto';
11+
import { API_URLS } from '@/constants/urls';
12+
import { addFavoriteApi, checkFavoriteApi } from '@/utils/medicineFavorites';
13+
import { ScrollToTopButton } from '@/components/common/ScrollToTopButton';
1414

1515
const handleApiError = (error: unknown, defaultMessage: string): string => {
1616
if (axios.isAxiosError(error)) {

apps/next-client/src/app/search/page.tsx

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
"use client";
2-
3-
import { useEffect, KeyboardEvent, ChangeEvent } from "react";
4-
import Link from "next/link";
5-
import Image from "next/image";
6-
import { useSearchParams } from "next/navigation";
7-
import useMedicineSearch from "@/hooks/useMedicineSearch";
8-
import useInfiniteScroll from "@/hooks/useInfiniteScroll";
9-
import { SEARCH_ERROR_MESSAGES } from "@/constants/search_errors";
10-
import { FILTERS, FILTER_ALL } from "@/constants/filters";
11-
import "@/styles/pages/search/search.scss";
12-
import { useSearchStore } from "@/store/useSearchStore";
13-
import { MedicineResultDto } from "@/dto/MedicineResultDto";
14-
import { ScrollToTopButton } from "@/components/common/ScrollToTopButton";
1+
'use client';
2+
3+
import { useEffect, KeyboardEvent, ChangeEvent } from 'react';
4+
import Link from 'next/link';
5+
import Image from 'next/image';
6+
import { useSearchParams } from 'next/navigation';
7+
import useMedicineSearch from '@/hooks/useMedicineSearch';
8+
import useInfiniteScroll from '@/hooks/useInfiniteScroll';
9+
import { SEARCH_ERROR_MESSAGES } from '@/constants/search_errors';
10+
import { FILTERS, FILTER_ALL } from '@/constants/filters';
11+
import '@/styles/pages/search/search.scss';
12+
import { useSearchStore } from '@/store/useSearchStore';
13+
import { MedicineResultDto } from '@/dto/MedicineResultDto';
14+
import { ScrollToTopButton } from '@/components/common/ScrollToTopButton';
1515

1616
export default function SearchPage() {
1717
const searchParams = useSearchParams();

0 commit comments

Comments
 (0)