import type { NextApiRequest, NextApiResponse } from 'next'; import { jsonRes } from '@fastgpt/service/common/response'; import { connectToDatabase } from '@/service/mongo'; import { request } from 'http'; import { FastGPTProUrl } from '@fastgpt/service/common/system/constants'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { await connectToDatabase(); const { path = [], ...query } = req.query as any; const requestPath = `/api/${path?.join('/')}?${new URLSearchParams(query).toString()}`; if (!requestPath) { throw new Error('url is empty'); } if (!FastGPTProUrl) { throw new Error('未配置商业版链接'); } const parsedUrl = new URL(FastGPTProUrl); delete req.headers?.rootkey; const requestResult = request({ protocol: parsedUrl.protocol, hostname: parsedUrl.hostname, port: parsedUrl.port, path: requestPath, method: req.method, headers: req.headers }); req.pipe(requestResult); requestResult.on('response', (response) => { Object.keys(response.headers).forEach((key) => { // @ts-ignore res.setHeader(key, response.headers[key]); }); response.statusCode && res.writeHead(response.statusCode); response.pipe(res); }); requestResult.on('error', (e) => { res.send(e); res.end(); }); } catch (error) { jsonRes(res, { code: 500, error }); } } export const config = { api: { bodyParser: false } };