# server-router

> Server router

Latest version **6.1.0** (published 2019-11-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install server-router
pnpm add server-router
yarn add server-router
bun add server-router
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 6.1.0 |
| Published | 2019-11-28 |
| First published | 2016-01-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 10.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | lrlna, perguth, watson, yoshuawuyts |
| Keywords | server, router, trie, wayfarer |

## Links

- npm: https://www.npmjs.com/package/server-router
- Repository: https://github.com/yoshuawuyts/server-router
- Homepage: https://github.com/yoshuawuyts/server-router#readme
- Issues: https://github.com/yoshuawuyts/server-router/issues
- npm.io page: https://npm.io/package/server-router

## Dependencies (3)

- [wayfarer](https://npm.io/package/wayfarer.md) ^7.0.0
- [urlencode](https://npm.io/package/urlencode.md) ^1.1.0
- [pathname-match](https://npm.io/package/pathname-match.md) ^1.2.0

## Alternatives

- [express-promise-router](https://npm.io/package/express-promise-router.md) — 736.1K weekly downloads
- [next-usequerystate](https://npm.io/package/next-usequerystate.md) — 29.8K weekly downloads
- [@bitkyc08/opencodex](https://npm.io/package/@bitkyc08/opencodex.md) — 4.6K weekly downloads
- [lynkr](https://npm.io/package/lynkr.md) — 575 weekly downloads
- [baremetal.js](https://npm.io/package/baremetal.js.md) — 42 weekly downloads

## Recent versions

- 6.1.0 (latest) — 2019-11-28
- 6.0.0 — 2017-08-01
- 5.2.0 — 2017-06-16
- 5.1.0 — 2017-04-18
- 5.0.0 — 2017-04-13
- 4.0.2 — 2016-11-05
- 4.0.1 — 2016-11-05
- 4.0.0 — 2016-11-05
- 3.0.0 — 2016-08-23
- 2.1.0 — 2016-04-13
- 2.0.1 — 2016-04-10
- 2.0.0 — 2016-04-07
- 1.1.9 — 2016-03-30
- 1.1.8 — 2016-03-29
- 1.1.7 — 2016-03-26
- … 11 more at https://npm.io/package/server-router/versions

## README

# server-router [![stability][0]][1]
[![npm version][2]][3] [![build status][4]][5] [![test coverage][6]][7]
[![downloads][8]][9] [![js-standard-style][10]][11]

Performant [radix-trie](https://en.wikipedia.org/wiki/Radix_tree) router for
streaming servers.

## Usage
```js
var serverRouter = require('server-router')
var http = require('http')

var router = serverRouter({ default: '/404' })

router.route('GET', '/hello', function (req, res, params) {
  res.end('hello world')
})

router.route('PUT', '/hello/:name', function (req, res, params) {
  res.end('hi there ' + params.name)
})

router.route('', '/404', function (req, res, params) {
  res.status = 404
  res.end('404')
})

http.createServer(router.start()).listen()
```

## API
### router = serverRouter(opts)
Create a new router with opts.

### router.route(method|[methods], route, function (req, res, params))
Register a new route with an HTTP method name and a routename. Can register
multiple handlers by passing an array of method names. `params` contains
matched partials from the route.

### router.match(req, res)
Match a route on a router.

### handler = router.start()
Return a function that can be passed directly to `http.createServer()` and
calls `router.match()`.

## Installation
```sh
$ npm install server-router
```

## See Also
- [wayfarer](https://github.com/yoshuawuyts/wayfarer) - vanilla radix-trie
  router
- [nanorouter](https://github.com/yoshuawuyts/nanorouter) - client-side
  radix-trie router

## License
[MIT](https://tldrlegal.com/license/mit-license)

[0]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square
[1]: https://nodejs.org/api/documentation.html#documentation_stability_index
[2]: https://img.shields.io/npm/v/server-router.svg?style=flat-square
[3]: https://npmjs.org/package/server-router
[4]: https://img.shields.io/travis/yoshuawuyts/server-router/master.svg?style=flat-square
[5]: https://travis-ci.org/yoshuawuyts/server-router
[6]: https://img.shields.io/codecov/c/github/yoshuawuyts/server-router/master.svg?style=flat-square
[7]: https://codecov.io/github/yoshuawuyts/server-router
[8]: http://img.shields.io/npm/dm/server-router.svg?style=flat-square
[9]: https://npmjs.org/package/server-router
[10]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[11]: https://github.com/feross/standard
[12]: https://github.com/yoshuawuyts/wayfarer

---
_Source: https://npm.io/package/server-router · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
