diff --git a/http/server/mod.ts b/http/server/mod.ts index 4d0bf85d8..889943b46 100644 --- a/http/server/mod.ts +++ b/http/server/mod.ts @@ -52,15 +52,22 @@ const parseBody = (req: Request) => { }; }; -const createResponse = (res: any, status = 200): Response => { - if (typeof res === "string") return new Response(res, { status }); +const createResponse = ( + res: any, + status = 200, + headers?: Headers, +): Response => { + const h = headers ? headers : new Headers({ + "Content-Type": "application/json", + }); + if (typeof res === "string") return new Response(res, { status, headers: h }); if (res instanceof Response) return res; if ( typeof res === "number" || typeof res === "bigint" || typeof res === "boolean" || typeof res === "undefined" - ) return new Response(JSON.stringify(res), { status }); + ) return new Response(JSON.stringify(res), { status, headers: h }); try { - return Response.json(res, { status }); + return Response.json(res, { status, headers: h }); } catch (error) { throw error; } @@ -392,8 +399,8 @@ if (root) fetchProps(root); ctx.next = () => {}; ctx.url = new URL(req.url); ctx.server = this; - ctx.send = (data: T, status = 200) => { - return createResponse(data, status); + ctx.send = (data: T, status = 200, headers?: Headers) => { + return createResponse(data, status, headers); }; ctx.kv = this.serverOptions["kv"]; ctx.options = this.serverOptions; diff --git a/http/server/types.ts b/http/server/types.ts index ec8a70365..340b8493b 100644 --- a/http/server/types.ts +++ b/http/server/types.ts @@ -101,6 +101,7 @@ export class Context { send!: ( data?: T | undefined, status?: number | undefined, + headers?: Headers, ) => Response | Promise; /** * Middleware callback