1.0.0 • Published 6 years ago

koa-file-router v1.0.0

Weekly downloads
115
License
MIT
Repository
github
Last release
6 years ago

koa-file-router

Generates a koa-router instance from a directory of files, allowing the path to determine the resulting url.

npm version npm dependencies npm dev dependencies build status

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 = require('koa');
var resources = require('koa-file-router');
var app = koa();

var router = resources('./routes');
app.use(router.routes());

Resources Directory

Each module inside the given resource directory generally will map to a route:

FileURL
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 trailing index 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 = function* () {
  // GET handler...
};

exports.post = function* () {
  // POST handler...
};

Param Module

All modules matching _params/*.js will be used as params. These modules should export a single middleware function.

module.exports = function* (next) {
  // param handler...
  yield* 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
1.0.0

6 years ago

0.3.0

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago

0.0.2

9 years ago

0.0.1

9 years ago