fix: 修复 AI 搜索 API 请求方法不匹配问题

将 n8n webhook 调用从 POST 改为 GET 请求,参数通过 URL query string 传递,与 n8n webhook 配置保持一致。

Co-Authored-By: Claude (glm-4.7) <noreply@anthropic.com>
This commit is contained in:
2026-01-27 15:37:26 +08:00
co-authored by Claude
parent 3aec209ff9
commit 11009320f1
+18 -16
View File
@@ -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()