Skip to content

Commit 0c974a0

Browse files
committed
feat(nextjs-app): 修改 /chat-messages 接口以支持流式响应
重构 Dify 的 chat-messages 接口的 POST 方法,使用 baseRequest 替代 post 方法 新增 response_mode 参数支持 直接透传原始响应给客户端,包括状态码、响应头和流式响应 添加必要的 CORS 头信息
1 parent 9abaeaa commit 0c974a0

File tree

1 file changed

+29
-12
lines changed
  • packages/nextjs-app/app/api/external/dify/[appId]/chat-messages

1 file changed

+29
-12
lines changed

packages/nextjs-app/app/api/external/dify/[appId]/chat-messages/route.ts

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,43 @@
11
import { genDifyRequest } from "@/app/api/utils";
2-
import { NextRequest, NextResponse } from "next/server";
2+
import { NextRequest } from "next/server";
33

44
const POST = async (
55
_request: NextRequest,
66
{ params }: { params: { appId: string } },
77
) => {
88
const { appId } = await params;
99
// 获取 body 中的参数
10-
const { conversation_id, inputs, files, query } = await _request.json();
10+
const { conversation_id, inputs, files, query, response_mode } =
11+
await _request.json();
1112
const difyRequest = await genDifyRequest(appId);
1213
const user = _request.headers.get("dc-user") as string;
13-
const result = await difyRequest.post(`/chat-messages`, {
14-
conversation_id,
15-
inputs,
16-
files,
17-
response_mode: "blocking",
18-
user,
19-
query,
14+
const response = await difyRequest.baseRequest(`/chat-messages`, {
15+
method: "POST",
16+
body: JSON.stringify({
17+
conversation_id,
18+
inputs,
19+
files,
20+
response_mode,
21+
user,
22+
query,
23+
}),
24+
headers: {
25+
"Content-Type": "application/json",
26+
},
2027
});
21-
return NextResponse.json({
22-
code: 200,
23-
data: result,
28+
29+
// 直接将原始响应“透传”给客户端
30+
return new Response(response.body, {
31+
status: response.status,
32+
headers: {
33+
// 允许流式响应
34+
"Content-Type":
35+
response.headers.get("Content-Type") || "application/json",
36+
// 允许 CORS 或其他你需要的 header
37+
"X-Version": response.headers.get("X-Version") || "",
38+
// 允许获取 Dify 版本
39+
"Access-Control-Allow-Headers": "X-Version, Authorization, Content-Type",
40+
},
2441
});
2542
};
2643

0 commit comments

Comments
 (0)