chore: update version to 0.0.48 and enhance request handling in Bun server
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://json.schemastore.org/package",
|
"$schema": "https://json.schemastore.org/package",
|
||||||
"name": "@kevisual/router",
|
"name": "@kevisual/router",
|
||||||
"version": "0.0.47",
|
"version": "0.0.48",
|
||||||
"description": "",
|
"description": "",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/router.js",
|
"main": "./dist/router.js",
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ export class BunServer extends ServerBase implements ServerType {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 将 Bun 的 Request 转换为 Node.js 风格的 req/res
|
// 将 Bun 的 Request 转换为 Node.js 风格的 req/res
|
||||||
return new Promise((resolve) => {
|
return new Promise(async (resolve) => {
|
||||||
const req: RouterReq = {
|
const req: RouterReq = {
|
||||||
url: url.pathname + url.search,
|
url: url.pathname + url.search,
|
||||||
method: request.method,
|
method: request.method,
|
||||||
@@ -80,6 +80,11 @@ export class BunServer extends ServerBase implements ServerType {
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
remoteAddress: request?.remoteAddress || request?.ip || clientInfo?.address || '',
|
remoteAddress: request?.remoteAddress || request?.ip || clientInfo?.address || '',
|
||||||
remotePort: clientInfo?.port || 0,
|
remotePort: clientInfo?.port || 0,
|
||||||
|
},
|
||||||
|
// @ts-ignore
|
||||||
|
bun: {
|
||||||
|
request, // 原始请求对象
|
||||||
|
server, // 原始服务器对象
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -212,10 +217,25 @@ export class BunServer extends ServerBase implements ServerType {
|
|||||||
};
|
};
|
||||||
// 处理请求体
|
// 处理请求体
|
||||||
if (request.method !== 'GET' && request.method !== 'HEAD') {
|
if (request.method !== 'GET' && request.method !== 'HEAD') {
|
||||||
request.text().then((body) => {
|
const contentType = request.headers.get('content-type') || '';
|
||||||
(req as any).body = body;
|
if (contentType.includes('application/json')) {
|
||||||
|
const text = await request.text();
|
||||||
|
req.body = text;
|
||||||
requestCallback(req, res);
|
requestCallback(req, res);
|
||||||
});
|
return;
|
||||||
|
} else if (contentType.includes('application/x-www-form-urlencoded')) {
|
||||||
|
const formData = await request.formData();
|
||||||
|
const body: Record<string, any> = {};
|
||||||
|
for (const [key, value] of formData.entries()) {
|
||||||
|
body[key] = value;
|
||||||
|
}
|
||||||
|
req.body = JSON.stringify(body);
|
||||||
|
requestCallback(req, res);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
requestCallback(req, res);
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
requestCallback(req, res);
|
requestCallback(req, res);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ export type RouterReq<T = {}> = {
|
|||||||
remoteAddress?: string;
|
remoteAddress?: string;
|
||||||
remotePort?: number;
|
remotePort?: number;
|
||||||
};
|
};
|
||||||
|
body?: string;
|
||||||
cookies?: Record<string, string>;
|
cookies?: Record<string, string>;
|
||||||
} & T;
|
} & T;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user