Routing

Trie-based router with static, dynamic, and wildcard routes.

1 min readEdit this page

Route registration

app.get('/users',      handler)
app.post('/users',     handler)
app.put('/users/:id',  handler)
app.delete('/users/:id', handler)

Dynamic parameters

app.get('/users/:id', (req, res) => {
  res.json({ userId: req.params.id })
})
 
app.get('/users/:userId/posts/:postId', (req, res) => {
  res.json({ userId: req.params.userId, postId: req.params.postId })
})

Wildcard routes

app.get('/files/*', (req, res) => {
  res.json({ path: req.params['*'] })
})

Router modules

import { Router } from '@restjs/core'
 
const users = new Router('/users')
users.get('/',    listUsers)
users.get('/:id', getUser)
users.post('/',   createUser)
 
app.mount('/api', users)

Tip

The trie-based router achieves O(log n) lookup even with thousands of routes.