bun-serve-router
A very simple router implementation for bun.serve()
using URL Pattern API.
No fancy, just works.
- Supports URL patterns such as
/user/:id
- Using the standard API:
- URL Pattern API to match your routes
-
Fetch API -
Request
andResponse
How to Use
Install the dependency:
bun add bun-serve-router
Import and add your routes:
import {Router} from "bun-serve-router";
const router = new Router();
router.add("GET", "/", (request, params) => {
return new Response("Hello World!");
})
In the fetch
handler of Bun.server()
, you can match your routes like this:
const response = await router.match(request);
Since it is possible that no route matches, you should check if response
is not undefined
before returning it:
if (response) {
return response;
}
Full Examples
import {Router} from "bun-serve-router";
const router = new Router();
// Add your routes
router.add("GET", "/", (request, params) => {
return new Response("Hello World!");
})
Bun.serve({
async fetch(request) {
// Match here
const response = await router.match(request);
if (response) {
return response;
}
// Return 404 if no route matches
return new Response("404 Not Found", { status: 404 });
},
});
Advanced Usage
Params
router.add("GET", "/hello/:myName", (request, params) => {
return new Response("Hello " + params.myName);
})
URLPatternResult
The third parameter is the URLPatternResult
object.
Check the URL Pattern API for more information.
router.add("GET", "/hello/:myName", (request, params, urlPatternResult) => {
return new Response("Hello " + params.myName);
})
Others
It is actually a very standalone router. It is actually not limited to bun.serve()
. As long as your application is using the Fetch API, it should be working too.