- 조사매물 조회 시 로그인 여부 확인 로직 서버 사이드로 이동 - 에러 핸들링 추가 - 조사매물 수정/작성 페이지 컴포넌트 리팩토링 - 조사매물 작성 후 제출 버튼 클릭 시 node 삽입 오류 해결
40 lines
1.3 KiB
TypeScript
40 lines
1.3 KiB
TypeScript
import axios from 'axios'
|
|
import { NextResponse } from 'next/server'
|
|
import { queryStringFormatter } from '@/utils/common-utils'
|
|
import { getIronSession } from 'iron-session'
|
|
import { cookies } from 'next/headers'
|
|
import { sessionOptions } from '@/libs/session'
|
|
import { SessionData } from '@/types/Auth'
|
|
|
|
export async function GET(request: Request) {
|
|
const cookieStore = await cookies()
|
|
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
|
|
|
if (!session.isLoggedIn) {
|
|
return NextResponse.json({ error: 'ログインしていません。' }, { status: 401 })
|
|
}
|
|
|
|
const { searchParams } = new URL(request.url)
|
|
|
|
const params: Record<string, string> = {}
|
|
searchParams.forEach((value, key) => {
|
|
const match = key.match(/inquiryListRequest\[(.*)\]/)
|
|
if (match) {
|
|
params[match[1]] = value
|
|
} else {
|
|
params[key] = value
|
|
}
|
|
})
|
|
|
|
try {
|
|
const response = await axios.get(`${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/qna/list?${queryStringFormatter(params)}`)
|
|
if (response.status === 200) {
|
|
return NextResponse.json(response.data)
|
|
}
|
|
return NextResponse.json({ error: 'Failed to fetch qna list' }, { status: response.status })
|
|
} catch (error: any) {
|
|
console.error('Error fetching qna list:', error.response.data)
|
|
return NextResponse.json({ error: 'route error' }, { status: 500 })
|
|
}
|
|
}
|