Response
Harpia Core provides a custom Response
. It gives you a fluent and expressive API to handle HTTP responses with simplicity and power.
To use it:
import { type Response } from "harpiats";
Features
Section titled “Features”The custom Response
offers intuitive methods for setting status codes, sending JSON, HTML, redirecting, setting cookies, and even rendering views through template engines.
Headers
Section titled “Headers”You can access and manipulate response headers directly using the .headers property:
res.headers.set("X-Custom-Header", "Hello");
More informations about Headers, see the MDN documentation.
res.status(code: number)
Section titled “res.status(code: number)”Sets the HTTP status code for the response.
res.status(404).send("Not found");
res.send(data: any)
Section titled “res.send(data: any)”Sends raw data (string, buffer, etc.). Automatically sets the Content-Length
header.
res.send("Hello, world!");
res.json(data: any)
Section titled “res.json(data: any)”Sends a JSON response with the correct Content-Type
header.
res.json({ success: true });
res.html(htmlString: string)
Section titled “res.html(htmlString: string)”Sends raw HTML with the appropriate Content-Type
.
res.html("<h1>Hello!</h1>");
res.redirect(url: string, statusCode = 302)
Section titled “res.redirect(url: string, statusCode = 302)”Redirects the request to a given URL with optional status code (default is 302).
res.redirect("/login");res.redirect("/", 301); // permanent redirect
Cookies
Section titled “Cookies”Set cookies easily with:
res.cookies.set("token", "abc123", { httpOnly: true, maxAge: 60 * 60 * 24, // 1 day});
See the Cookies section for full details on cookie options.
Template Rendering
Section titled “Template Rendering”If a template engine is configured, you can render views:
res.render("dashboard", { user });
You can also specify a module name for modular view resolution:
res.module("admin").render("users/list");
Note: res.module() only works if you are using Harpia’s built-in template engine. Make sure to configure the template engine using app.engine(). For more information, see the Template Engine section.
Full Example
Section titled “Full Example”router.get("/profile", async (req: Request, res: Response) => { const user = await getUser(req);
if (!user) { return res.status(401).json({ error: "Unauthorized" }); }
res.status(200).render("profile", { user });});