bun-serve-router

0.0.3 • Public • Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i bun-serve-router

Weekly Downloads

2

Version

0.0.3

License

MIT

Unpacked Size

5.67 kB

Total Files

5

Last publish

Collaborators

  • louislam