Questo avvia un server HTTP in ascolto sulla porta 3000. Dimostra il routing di base con un numero di risposte comuni e gestisce anche i dati POST da form standard o come JSON.
Consulta Bun.serve per i dettagli.
ts
const server = Bun.serve({
async fetch(req) {
const path = new URL(req.url).pathname;
// risponde con text/html
if (path === "/") return new Response("Benvenuto su Bun!");
// reindirizza
if (path === "/abc") return Response.redirect("/source", 301);
// invia indietro un file (in questo caso, *questo* file)
if (path === "/source") return new Response(Bun.file(import.meta.path));
// risponde con JSON
if (path === "/api") return Response.json({ some: "buns", for: "you" });
// riceve dati JSON a una richiesta POST
if (req.method === "POST" && path === "/api/post") {
const data = await req.json();
console.log("JSON ricevuto:", data);
return Response.json({ success: true, data });
}
// riceve dati POST da un form
if (req.method === "POST" && path === "/form") {
const data = await req.formData();
console.log(data.get("someField"));
return new Response("Successo");
}
// 404s
return new Response("Pagina non trovata", { status: 404 });
},
});
console.log(`In ascolto su ${server.url}`);