koa-isomorphic-router v1.0.1
Koa Isomorphic Router
The fastest elegant modern amiable Koa.js Router โก.
Features
- ๐ฆ Based on top of Trek Router which inspired by Echo's Router.
- ๐ Faster than other Koa.js router solutions.
- ๐
๐ป Express-style routing (
app.get
,app.post
,app.put
,app.delete
, etc.) - ๐ฅ Blaze and lightweight router.
- โ๏ธ Tiny Bundle: less than 2.5kB (gzip)
- ๐ช Named URL parameters.
- ๐ฏ Route middleware.
- ๐ฅ Support router layer middlewares.
- ๐ Responds to
OPTIONS
requests with allowed methods. - โ๏ธ Support for
405 Method Not Allowed
. - โ Support for
501 Path Not Implemented
. - ๐งผ Support
trailing slash
andfixed path
by automatic redirection. - โจ Asynchronous support (
async/await
). - ๐ TypeScript support.
Note
Currently, this modules support 405 Method Not Allowed
and 501 Path Not Implemented
for 'static' routes only
as you can see here.
As soon as possible when I get response here will support 'param' and 'match-any' routes.
For support RegExp
in route path also I waiting for
any response here.
Benchmarks
All Koa router solutions depend on path-to-regexp when our solution relies on the trek-router which has the best performance and not over the path-to-regexp only also on others such as (route-recognizer, route-trie, routington ...etc).
- See trek-router benchmarks (
trek-router
better perf. thanpath-to-regexp
). - See fastify benchmarks (
koa-isomorphic-router
better perf. thankoa-router
).
Installation
# npm
$ npm install koa-isomorphic-router
# yarn
$ yarn add koa-isomorphic-router
Usage
This is a practical example of how to use.
const Koa = require('koa')
const Router = require('koa-isomorphic-router')
const app = new Koa()
const router = new Router()
router
.get('/product/:id', (ctx, next) => {
ctx.body = { productId: ctx.params.id }
})
app.use(router.routes())
app.listen(5050)
API
new Router(options?)
Create a new router.
Param | Type | Description |
---|---|---|
options | Object | |
options.prefix | String | prefix router paths |
options.throw | Boolean | throw error instead of setting status and header |
options.notImplemented | function | throw the returned value in place of the default NotImplemented error |
options.methodNotAllowed | function | throw the returned value in place of the default MethodNotAllowed error |
router.get|post|put|patch|delete|all(path, ...middlewares)
The http methods provide the routing functionality in router
.
Method middleware and handlers follow usual Koa middleware behavior, except they will only be called when the method and path match the request.
// handle a GET / request.
router.get('/', (ctx) => { ctx.body = 'Hello World!' })
router.prefix(prePath)
Route paths can be prefixed at the router level:
// handle a GET /prePath/users request.
router
.prefix('/prePath')
.get('/users', (ctx) => { ctx.body = 'Hello World!' })
router.route(path)
Lookup route with given path.
// handle a GET /users request.
router
.route('/users')
.get((ctx) => { ctx.body = 'Hello World!' })
router.use(...middlewares)
Use given middleware(s). Currently, use middleware(s) for all paths of router isntance.
router.routes()
Returns router middleware which handle a route matching the request.
Support
If you have any problem or suggestion please open an issue here.
Call for Maintainers/Contributors
This module is a attempt to craft an isomorphic fast Router, from/to Koa.js community. So, don't hesitate to offer your help โค๏ธ.
Contributors
Name | Website |
---|---|
Imed Jaberi | https://www.3imed-jaberi.com/ |
License
MIT ยฉ Imed Jaberi