0.0.3 • Published 8 months ago

bun-serve-router v0.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

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:

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.

0.0.3

8 months ago

0.0.2

8 months ago

0.0.1

8 months ago