From 11009320f17d85af4b2940a7116b2379c1d7e1a4 Mon Sep 17 00:00:00 2001 From: Caihaohan Date: Tue, 27 Jan 2026 15:37:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20AI=20=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=20API=20=E8=AF=B7=E6=B1=82=E6=96=B9=E6=B3=95=E4=B8=8D?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 n8n webhook 调用从 POST 改为 GET 请求,参数通过 URL query string 传递,与 n8n webhook 配置保持一致。 Co-Authored-By: Claude (glm-4.7) --- src/app/api/search/ai/route.ts | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/app/api/search/ai/route.ts b/src/app/api/search/ai/route.ts index d28cfd7..62bfd5a 100644 --- a/src/app/api/search/ai/route.ts +++ b/src/app/api/search/ai/route.ts @@ -15,25 +15,27 @@ export async function POST(request: Request) { // 验证查询参数 const validatedQuery = ProjectQuerySchema.parse(body) - // 转发到 n8n 工作流 - const n8nResponse = await fetch(N8N_WEBHOOK_URL, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - query: validatedQuery.search, - locale: body.locale || 'zh', - limit: validatedQuery.limit || 20, - filters: { - tags: validatedQuery.tags, - status: validatedQuery.status - } - }) + // 构建 n8n webhook URL(使用 GET 请求 + query string) + const searchParams = new URLSearchParams({ + desc: validatedQuery.search || '', + limit: String(validatedQuery.limit || 20), + }) + + // 如果有标签过滤,添加到参数中 + if (validatedQuery.tags && validatedQuery.tags.length > 0) { + searchParams.set('tags', validatedQuery.tags.join(',')) + } + + const n8nUrl = `${N8N_WEBHOOK_URL}?${searchParams.toString()}` + + // 转发到 n8n 工作流(使用 GET 请求) + const n8nResponse = await fetch(n8nUrl, { + method: 'GET', }) if (!n8nResponse.ok) { - throw new Error(`n8n webhook failed: ${n8nResponse.statusText}`) + const errorText = await n8nResponse.text() + throw new Error(`n8n webhook failed: ${n8nResponse.statusText} - ${errorText}`) } const results = await n8nResponse.json()