express-fs-router v0.3.1
Express FileSystem Router
Straightforward filesystem routing utility for Express. Inspiration drawn from micro
Getting Started
Install
yarn add express-fs-routerCreate sample endpoint
// api/index.js
export default function(req, res) {
res.json({ message: 'hello world!' })
}Add to Express application
// app.js
import express from 'express'
import FSRouter from 'express-fs-router'
const app = express()
app.use('/api', new FSRouter('api'))
app.listen(3000, () => console.log('Listening at http://localhost:3000'))Features
HTTP Methods & Named Function Default Exports
To specify a supported method on a route add a named function default export:
// api/get.js
// sample GET route
export default function get(req, res) {
res.json({ message: 'hello world' })
}// api/post.js
// sample POST route
export default function post(req, res) {
res.json({ message: 'hello world' })
}By default anonymous functions or named functions that are not one of the supported request methods are assumed to support ALL methods. In short, said functions are added to the Express router as:
router.all(route, handler)Middleware
To apply middleware to the route's handler, export an array of functions in the order of execution:
// api/middleware.js
function myMiddleware(req, res, next) {
console.log('LOGGED FROM MYMIDDLEWARE')
next()
}
function get(req, res) {
res.json({ message: 'yay middleware!' })
}
export default [myMiddleware, get]Methods Routing
This package allows defining multiple supported HTTP methods per route with file-system methods routing:
|- api/
|- methods/
|- :get.js
|- :post.jsSpecifying Globally Supported Request Methods
FSRouter accepts an options argument:
new FSRouter('api', { methods: ['POST'] })By specifying only the POST method, all anonymous functions will assume the supported method as POST. However, specifying ALL in the option.methods will trump all other supplied methods and assign to the router as router.all(route, handler).