Files
aiartstudio/server/api/images/generate.post.ts
T
2026-04-25 19:14:58 +08:00

45 lines
1.2 KiB
TypeScript

import { consola } from "consola";
import type {
IImageGenerateData,
IImageGenerateRequest
} from "#shared/types/openai";
import { isUnauthorizedError } from "~~/server/utils";
export default defineEventHandler(async (event) => {
const requestBody = await readBody<Partial<IImageGenerateRequest> | null>(
event
);
// 只接受 JSON 对象,避免数组、字符串等无效 body 被用于生成请求。
if (
requestBody !== null &&
(typeof requestBody !== "object" || Array.isArray(requestBody))
) {
return createErrorResponse(400, "请求体必须是 JSON 对象");
}
const prompt = requestBody?.prompt?.trim();
if (!prompt) {
return createErrorResponse(400, "请输入图片描述");
}
try {
const apiKey = await getAiArtStudioTokenKey(event);
const result = await askImg({
apiKey,
prompt
});
consola.info("图片生成成功", { prompt, imageUrl: result.imageUrl });
return createSuccessResponse<IImageGenerateData>(result, "图片生成成功");
} catch (error) {
if (isUnauthorizedError(error)) {
clearNewApiAuthCookies(event);
return createErrorResponse(401, "未登录");
}
return createUpstreamErrorResponse(error, "图片生成失败");
}
});