Routing
Panduan lengkap sistem routing di BlizzardTS. 🗺️
🗺️ Routing
Routing adalah jantung dari aplikasi web. BlizzardTS menggunakan Radix Tree Router yang sangat cepat untuk mencocokkan URL dengan handler yang tepat.
Basic Routing
BlizzardTS mendukung semua HTTP method standar: get, post, put, delete, patch, dll.
app.get("/posts", (c) => c.text("List Posts"));
app.post("/posts", (c) => c.text("Create Post"));
app.put("/posts", (c) => c.text("Update Post"));
app.delete("/posts", (c) => c.text("Delete Post"));Path Parameters
Kamu bisa menangkap nilai dinamis dari URL menggunakan syntax :param.
app.get("/users/:id", (c) => {
const id = c.req.params.id;
return c.json({ userId: id });
});
// Multiple parameters
app.get("/search", (c) => {
const query = c.req.query("q"); // "blizzard"
const page = c.req.query("page"); // "1"
return c.json({ result: `Searching for ${query} on page ${page}` });
});Wildcards
Gunakan * untuk mencocokkan segala sesuatu. Sangat berguna untuk serve static files atau catch-all route.
// Cocok dengan /files/image.png, /files/docs/readme.pdf, dll
app.get("/files/*", (c) => {
return c.text(`Accessing file: ${c.req.path}`);
});Route Grouping & Modularisasi
Untuk aplikasi besar, jangan tulis semua route di satu file. Pisahkan berdasarkan fitur.
1. Buat file route terpisah (misal src/routes/users.ts)
import { Blizzard } from "blizzardts";
export const userRoutes = (app: Blizzard) => {
app.get("/users", (c) => c.json([]));
app.post("/users", (c) => c.json({ created: true }));
};2. Daftarkan di src/index.ts
import { Blizzard } from "blizzardts";
import { userRoutes } from "./routes/users";
const app = Blizzard();
userRoutes(app); // Register routes
export default handle(app);404 Not Found
Secara default, BlizzardTS akan mengembalikan 404 jika route tidak ditemukan. Kamu bisa kustomisasi ini (tunggu update fitur notFound handler!).
Saat ini, kamu bisa menggunakan wildcard di akhir deklarasi route sebagai fallback:
app.get("*", (c) => {
return c.status(404).json({ error: "Route not found" });
});