Ceci démarre un serveur HTTP écoutant sur le port 3000. Il démontre le routage de base avec un certain nombre de réponses courantes et gère également les données POST depuis des formulaires standards ou en JSON.
Voir Bun.serve pour plus de détails.
ts
const server = Bun.serve({
async fetch(req) {
const path = new URL(req.url).pathname;
// répondre avec text/html
if (path === "/") return new Response("Welcome to Bun!");
// redirection
if (path === "/abc") return Response.redirect("/source", 301);
// renvoyer un fichier (dans ce cas, *ce* fichier)
if (path === "/source") return new Response(Bun.file(import.meta.path));
// répondre avec JSON
if (path === "/api") return Response.json({ some: "buns", for: "you" });
// recevoir des données JSON à une requête POST
if (req.method === "POST" && path === "/api/post") {
const data = await req.json();
console.log("Received JSON:", data);
return Response.json({ success: true, data });
}
// recevoir des données POST depuis un formulaire
if (req.method === "POST" && path === "/form") {
const data = await req.formData();
console.log(data.get("someField"));
return new Response("Success");
}
// 404s
return new Response("Page not found", { status: 404 });
},
});
console.log(`Listening on ${server.url}`);