Files
NianAIGC/lib/server/api.ts
2026-05-29 15:54:13 +08:00

27 lines
901 B
TypeScript

import { NextResponse } from "next/server";
export function jsonOk<T>(payload: T, init?: ResponseInit) {
return NextResponse.json(payload, init);
}
export function jsonError(error: unknown, status = 400) {
const resolvedStatus = statusFromError(error) || status;
return NextResponse.json({
error: error instanceof Error ? error.message : String(error)
}, { status: resolvedStatus });
}
export async function readJsonBody<T extends Record<string, unknown>>(request: Request): Promise<T> {
try {
return await request.json() as T;
} catch {
return {} as T;
}
}
function statusFromError(error: unknown): number | undefined {
if (typeof error !== "object" || error === null || !("status" in error)) return undefined;
const status = Number((error as { status?: unknown }).status);
return Number.isInteger(status) && status >= 400 && status <= 599 ? status : undefined;
}