Skip to main content
Deno 2 is finally here πŸŽ‰οΈ
Learn more

Toruk

Code Coverage

Deno router fast, lightweight, close to runtime best practices. The easiest way to enjoy Deno.

Getting Started

import { App } from 'https://deno.land/x/toruk/mod.ts'

new App()
 .get('/', () => new Response('Hello World'))
 .get('/users/:id', ({ params }) => new Response(`User ${params.id}`))
 .serve()

Path uses URLPattern matching.

Handler functions follow the same signature as Deno’s serve handler.

import { App } from 'https://deno.land/x/toruk/mod.ts'

new App()
 .post('/users/:id/posts', async ({ request, info, params }) => {
  const body = await request.json()

  return new Response(`Post ${body.id} created for user ${params.id}`)
 })
 .serve()

Alternative Syntaxes

Object

import { App } from 'https://deno.land/x/toruk/mod.ts'

new App({
 router: {
  routes: [
   {
    path: '/',
    handler: () => new Response('Hello World'),
    children: [
     {
      path: 'users/:id',
      handler: ({ params }) => new Response(`User ${params.id}`),
     },
    ],
   },
  ],
 },
})
 .serve()

Middlewares

import { App } from 'https://deno.land/x/toruk/mod.ts'
import { cors } from 'https://deno.land/x/toruk/middlewares/mod.ts'

new App()
 .use(cors())
 .get('/', () => new Response('Hello World'))
 .serve()