@routes/index

1.2.1Β β€’Β PublicΒ β€’Β Published

@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

Package Sidebar

Install

npm i @routes/index

Weekly Downloads

1

Version

1.2.1

License

MIT

Unpacked Size

6.65 kB

Total Files

7

Last publish

Collaborators

  • omrilotan