mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-24 06:34:46 +08:00
chore: remove
This commit is contained in:
@@ -1,98 +0,0 @@
|
|||||||
import { type NextRequest } from "next/server";
|
|
||||||
|
|
||||||
export const runtime = "nodejs";
|
|
||||||
|
|
||||||
export async function GET(
|
|
||||||
request: NextRequest,
|
|
||||||
{ params }: { params: Promise<{ path: string[] }> },
|
|
||||||
) {
|
|
||||||
return handleProxy(request, (await params).path);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function POST(
|
|
||||||
request: NextRequest,
|
|
||||||
{ params }: { params: Promise<{ path: string[] }> },
|
|
||||||
) {
|
|
||||||
return handleProxy(request, (await params).path);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function PUT(
|
|
||||||
request: NextRequest,
|
|
||||||
{ params }: { params: Promise<{ path: string[] }> },
|
|
||||||
) {
|
|
||||||
return handleProxy(request, (await params).path);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function DELETE(
|
|
||||||
request: NextRequest,
|
|
||||||
{ params }: { params: Promise<{ path: string[] }> },
|
|
||||||
) {
|
|
||||||
return handleProxy(request, (await params).path);
|
|
||||||
}
|
|
||||||
|
|
||||||
async function handleProxy(request: NextRequest, pathSegments: string[]) {
|
|
||||||
const targetUrl = `http://localhost:8000/${pathSegments.join("/")}`;
|
|
||||||
|
|
||||||
// Preserve query parameters
|
|
||||||
const searchParams = request.nextUrl.searchParams.toString();
|
|
||||||
const fullUrl = searchParams ? `${targetUrl}?${searchParams}` : targetUrl;
|
|
||||||
|
|
||||||
// Prepare headers
|
|
||||||
const headers = new Headers();
|
|
||||||
request.headers.forEach((value, key) => {
|
|
||||||
// Skip Next.js specific headers
|
|
||||||
if (!key.startsWith("x-") && key !== "host" && key !== "connection") {
|
|
||||||
headers.set(key, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Prepare fetch options
|
|
||||||
const fetchOptions: RequestInit = {
|
|
||||||
method: request.method,
|
|
||||||
headers,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Add body for non-GET requests
|
|
||||||
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
||||||
fetchOptions.body = await request.text();
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const response = await fetch(fullUrl, fetchOptions);
|
|
||||||
|
|
||||||
// Check if response is SSE
|
|
||||||
const contentType = response.headers.get("content-type");
|
|
||||||
const isSSE = contentType?.includes("text/event-stream");
|
|
||||||
|
|
||||||
if (isSSE && response.body) {
|
|
||||||
// Handle SSE streaming
|
|
||||||
return new Response(response.body, {
|
|
||||||
status: response.status,
|
|
||||||
statusText: response.statusText,
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "text/event-stream",
|
|
||||||
"Cache-Control": "no-cache",
|
|
||||||
Connection: "keep-alive",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle regular responses
|
|
||||||
const responseHeaders = new Headers();
|
|
||||||
response.headers.forEach((value, key) => {
|
|
||||||
responseHeaders.set(key, value);
|
|
||||||
});
|
|
||||||
|
|
||||||
return new Response(response.body, {
|
|
||||||
status: response.status,
|
|
||||||
statusText: response.statusText,
|
|
||||||
headers: responseHeaders,
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
console.error("Proxy error:", error);
|
|
||||||
return new Response(JSON.stringify({ error: "Proxy request failed" }), {
|
|
||||||
status: 502,
|
|
||||||
headers: { "Content-Type": "application/json" },
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user