Nextjs API Route 書き方サンプル
Firebase FireStoreから特定のデータを取得するためのAPIを作成したが、Firebase Functionsへ移行するため、残しておく。
src/app/api/touch/route.ts
import { NextResponse } from "next/server";
import { db } from "@/firebase/firebase"; // Firestore インスタンスを取得
import { collection, getDocs, query, where } from "firebase/firestore";
// APIエンドポイント: /api/touch?c_id=t_01
export async function GET(req: Request) {
try {
// クエリパラメータ取得
const { searchParams } = new URL(req.url);
const c_id = searchParams.get("c_id");
if (!c_id) {
return NextResponse.json({ error: "c_id が必要です" }, { status: 400 });
}
// Firestore から c_id に一致するデータを取得
const q = query(collection(db, "touchCategories"), where("c_id", "==", c_id));
const snapshot = await getDocs(q);
if (snapshot.empty) {
return NextResponse.json({ error: "データが見つかりません" }, { status: 404 });
}
// 取得したデータを配列に整形
const data = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() }));
return NextResponse.json(data);
} catch (error) {
console.error("Error fetching data:", error);
return NextResponse.json({ error: "サーバーエラー" }, { status: 500 });
}
}