import { NextRequest, NextResponse } from 'next/server' const API_BASE = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000' async function handler(request: NextRequest): Promise { const url = new URL(request.url) const targetPath = url.pathname.replace('/api/proxy', '') const targetUrl = `${API_BASE}${targetPath}${url.search}` const headers = new Headers(request.headers) // Remove Next.js internal headers headers.delete('host') headers.delete('x-forwarded-for') headers.delete('x-forwarded-host') headers.delete('x-forwarded-proto') const body = request.method !== 'GET' && request.method !== 'HEAD' ? await request.arrayBuffer() : undefined try { const upstream = await fetch(targetUrl, { method: request.method, headers, body, }) const responseHeaders = new Headers(upstream.headers) responseHeaders.delete('transfer-encoding') const responseBody = await upstream.arrayBuffer() return new NextResponse(responseBody, { status: upstream.status, statusText: upstream.statusText, headers: responseHeaders, }) } catch (err) { return NextResponse.json( { error: 'Upstream request failed', detail: String(err) }, { status: 502 }, ) } } export const GET = handler export const POST = handler export const PUT = handler export const PATCH = handler export const DELETE = handler export const HEAD = handler export const OPTIONS = handler