Package Exports
- @routes/index
- @routes/index/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@routes/index) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@routes/index

📇 An index of routes exposed by Express app
const app = express();
const index = require('@routes/index');
...
const filter = (method, path) => {
if (/patch/i.test(method)) { return false; }
if (path.endsWith('ping')) { return false; }
return true;
};
index(app, filter);
Arguments and options
- First argument is an Expressjs app instance.
- Second, optional, argument is a named options object. All options are optional
Name | Type | Meaning |
---|---|---|
filter | {Function} | Filter routes by method or path |
should | {Function} | For 'route' method, should it display the 404 list page or simply call next middleware |
filter
method accepts two arguments: method (lowercase), and path - respectfully (e.g. :'get', '/users/:user_id'
)
const filter = (method, path) => path.starsWith('/api');
should
method accepts two arguments: request and response - the express middleware arguments
const should = (request, response) => request.path.startsWith('/api');
Usage
Example express app setup
const express = require('express'); const app = express(); app.get('/ping', ...); app.get('/users/:user_id', ...); app.patch('/users/:user_id', ...); app.delete('/users/:user_id', ...); app.get('/users', ...); app.post('/users', ...);
Get an index of all available routes
const index = require('@routes/index');
index(app);
| Example
| -
|
Get a flat list of routes (no methods) (* de-duped)
const {flat} = index(app);
flat // ['/users', '/users/:user_id']
Show API consumers an index for 404 message
const {route} = index(
app,
// filter paths from the list
{
filter: (method, path) => !['/ping', '*'].includes(path),
should: (request, response) => !request.is('html'),
}
);
app.all('*', route);
| Example
| -
|
Result
< HTTP/1.1 404 Not Found
< Content-Type: text/plain; charset=utf-8
< Content-Length: 290
< Date: Wed, 17 Apr 2019 21:19:32 GMT
< Connection: keep-alive
<
{ [290 bytes data]
404 error - Could not find route [GET] /missing
Here is a index of available routes:
- [GET] /users
- [POST] /users
- [GET] /users/:user_id
- [PATCH] /users/:user_id
- [DELETE] /users/:user_id