api proxy

This commit is contained in:
Rafi
2023-04-05 23:17:14 +08:00
parent 21dc2b9236
commit fb9e8b8c7d
11 changed files with 431 additions and 439 deletions

View File

@@ -1,10 +1,34 @@
import { createProxyMiddleware, Filter, Options, RequestHandler } from 'http-proxy-middleware'
export default defineEventHandler((event) => {
import {getRequestURL} from "h3";
const PayloadMethods = new Set(["PATCH", "POST", "PUT", "DELETE"]);
export default defineEventHandler(async (event) => {
// @ts-ignore
if (event.node.req.url.startsWith('/api/')) {
return proxyRequest(
event,
(process.env.SERVER_DOMAIN || 'http://localhost:8000') + event.node.req.url
)
// TODO: fix fetch failed
const target = (process.env.SERVER_DOMAIN || 'http://localhost:8000') + event.node.req.url
// Method
const method = getMethod(event)
// Body
let body;
if (PayloadMethods.has(method)) {
body = await readRawBody(event).catch(() => undefined);
}
// Headers
const headers = getProxyRequestHeaders(event);
if (method === 'DELETE') {
delete headers['content-length']
}
return sendProxy(event, target, {
sendStream: event.node.req.url === '/api/conversation/',
fetchOptions: {
headers,
method,
body,
},
});
}
})