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 });
    }
}

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です