import { NextResponse } from "next/server"; export async function GET(req: Request) { const { searchParams } = new URL(req.url); const query = (searchParams.get("query") ?? "").trim(); const page = Number(searchParams.get("page") ?? "1"); if (!query) { return NextResponse.json({ totalCount: 0, items: [] }); } const confmKey = process.env.JUSO_API_KEY; // ✅ 키 없으면 UI 개발용 더미 if (!confmKey) { return NextResponse.json({ totalCount: 3, items: [ { zipNo: "06236", roadAddr: "서울특별시 강남구 테헤란로 152, 강남파이낸스센터 12층", jibunAddr: "서울특별시 강남구 역삼동 737-10 강남파이낸스센터", }, { zipNo: "06180", roadAddr: "서울특별시 강남구 테헤란로 231, 센터필드 WEST동 3층", jibunAddr: "서울특별시 강남구 역삼동 824-11 센터필드 WEST동", }, { zipNo: "06142", roadAddr: "서울특별시 강남구 테헤란로 521, 삼성동 코엑스인터컨티넨탈호텔 별관", jibunAddr: "서울특별시 강남구 삼성동 159-1 코엑스인터컨티넨탈호텔", }, ], }); } // ✅ 행안부 주소검색 API(JSON) const url = new URL("https://business.juso.go.kr/addrlink/addrLinkApi.do"); url.searchParams.set("confmKey", confmKey); url.searchParams.set("currentPage", String(page)); url.searchParams.set("countPerPage", "20"); url.searchParams.set("keyword", query); url.searchParams.set("resultType", "json"); const r = await fetch(url.toString(), { cache: "no-store" }); const j = await r.json(); const common = j?.results?.common; const totalCount = Number(common?.totalCount ?? 0); const list = j?.results?.juso ?? []; const items = list.map((x: any) => ({ zipNo: x.zipNo, roadAddr: x.roadAddr, jibunAddr: x.jibunAddr, })); return NextResponse.json({ totalCount, items }); }