koa-file-router
Generates a koa-router instance from a directory of files, allowing the path to determine the resulting url.
Usage
I took a lot of concepts from a similar project I worked on previously.
NOTE: version 1.x
is written for koa@2+
. If you need support for koa@1
or below, then use v0.x
.
Server
var koa = ;var resources = ;var app = ; var router = ;app;
Resources Directory
Each module inside the given resource directory generally will map to a route:
File | URL |
---|---|
index.js | / |
users/index.js | /users |
users/new.js | /users/new |
users/:user.js | /users/:user |
_params/user.js | (param) |
Some things to note:
- Files named
index.js
will have the trailingindex
stripped - Files under
_params/
will be added as param handlers instead of routes - Files with a
:
prefix will be mounted after static routes. (to keep/users/:user
from pre-empting/users/new
)
Resource Module
Each resource module can export a function for any valid HTTP method. (the property name should be lowercase)
exports { // GET handler...}; exports { // POST handler...};
Param Module
All modules matching _params/*.js
will be used as params. These modules
should export a single middleware function.
module { // param handler... next;};
NOTE: do not nest params in sub-directories within _params
, only the
base name of the file is considered when naming the param.
API
resources(dir, [options])
This method synchronously traverses the given dir
, and returns a
koa-router instance.
Available options include:
prefix
: will be passed to koa-router and used to prefix all URLs