대민서비스 물재이용 랜딩 페이지 수요처등록 우편번호 검색 팝업창 추가
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
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 });
|
||||
}
|
||||
Reference in New Issue
Block a user