β Thanks to everyone who has starred the project, it means a lot!
Plugin to handle routes in express automatically based on directory structure.
π° Full Documentation
npm install --save express-automatic-routes
import express from 'express'
import autoroutes from 'express-automatic-routes'
const app = express()
autoroutes(app, {
dir: './<autoroutes-directory>' // relative to your cwd
})
//file: `<autoroutes-directory>/some/route.js`
//url: `http://your-host/some/route`
export default (expressApp) => ({
get: (request, response) => {
response.status(200).send('Hello, Route').end()
}
})
//file: `<autoroutes-directory>/some/route.ts`
//url: `http://your-host/some/route`
import { Application, Request, Response } from 'express'
import { Resource } from 'express-automatic-routes'
export default (express: Application) => <Resource> {
get: (request: Request, response: Response) => {
response.status(200).send('Hello, Route!').end()
}
}
βΉοΈ file/directory name must follow syntax
:paramName
or{paramName}
//file: `<autoroutes-directory>/users/{userId}/photos.js`
//mapped to: `<your host>/users/:userId/photos`
export default (expressApp) => ({
get: (request, response) => {
response.end(`photos of user ${request.params.userId}`)
}
})
each file must export a function that accept express as parameter, and return an object with the following properties:
export default (expressApp) => ({
middleware: [ /* your middlewares */ ]
delete: { /* your handler logic */},
get: { /* your handler logic */ },
head: { /* your handler logic */ },
patch: { /* your handler logic */ },
post: { /* your handler logic */ },
put: { /* your handler logic */ },
options: { /* your handler logic */ },
})
the middleware
parameter can be one of the following:
undefined
(just omit it)Middleware function
(a function complain to express middleware definition)An Array of Middleware functions
example:
βΉοΈ simple middleware
export default (expressApp) => ({
middleware: (req, res, next) => next()
/* ... */
})
βΉοΈ array of middleware
const m1 = (req, res, next) => next()
const m2 = (req, res, next) => next()
export default (expressApp) => ({
middleware: [m1, m2]
/* ... */
})
A route can be a function (likes middleware but without next
parameter) or an object who has the following properties:
- middleware // same as module middleware
- handler // the handler of the function
examples:
βΉοΈ simple route method
export default (expressApp) => ({
get: (req, res) => res.send('Hello There!')
})
βΉοΈ route method with middleware(s)
export default (expressApp) => ({
get: {
middleware: (req, res, next) => next()
handler: (req, res) => res.send('Hello There!')
}
})
to skip file in routes directory, prepend the .
or _
charater to filename
examples:
routes
βββ .ignored-directory
βββ _ignored-directory
βββ .ignored-js-file.js
βββ _ignored-js-file.js
βββ .ignored-ts-file.ts
βββ _ignored-ts-file.ts
βββ ignored-js-test.test.js
βββ ignored-ts-test.test.ts
β οΈ also any*.test.js
and*.test.ts
are skipped!
this is useful if you want to have a lib file containts functions that don't have to be a route, so just create the file with _
prepending character
Licensed under MIT
Thanks goes to these wonderful people (emoji key):
Giovanni Cardamone π» π π‘ π§ |
This project follows the all-contributors specification.
Contributions of any kind welcome!