예제 소스
오목 Next.js 웹과 VLM 착수 API 연결하기 · 파일 59개
route.ts
import { NextRequest, NextResponse } from "next/server";
import { createGame, getLatestPlayingForGuest } from "@/lib/db";
import { DEFAULT_SIZE, PLAY_SIZES } from "@/lib/board";
export const runtime = "nodejs";
/** POST: 새 대국. GET ?guestId=: 이어둘 대국 */
export async function GET(req: NextRequest) {
const guestId = req.nextUrl.searchParams.get("guestId")?.trim();
if (!guestId) {
return NextResponse.json({ error: "guestId required" }, { status: 400 });
}
const game = getLatestPlayingForGuest(guestId);
return NextResponse.json({ game });
}
export async function POST(req: NextRequest) {
const body = (await req.json().catch(() => ({}))) as {
guestId?: string;
size?: number;
};
const guestId = body.guestId?.trim();
if (!guestId) {
return NextResponse.json({ error: "guestId required" }, { status: 400 });
}
const size = Number(body.size ?? DEFAULT_SIZE);
if (!(PLAY_SIZES as readonly number[]).includes(size)) {
return NextResponse.json({ error: `unsupported size: ${size}` }, { status: 400 });
}
const game = createGame(guestId, size);
return NextResponse.json({ game });
}