⭐ Thanks to everyone who has starred the project, it means a lot!
Plugin to handle routes in fastify automatically based on directory structure.
npm install --save fastify-autoroutes
const fastify = require('fastify')
const server = fastify()
server.register(require('fastify-autoroutes'), {
dir: './<autoroutes-directory>', // relative to your cwd
prefix: '/api', // optional, don't use if you do not need prefixes
})
//file: `<autoroutes-directory>/some/route.js`
//url: `http://your-host/some/route`
export default (fastifyInstance) => ({
get: {
handler: async (request, reply) => 'Hello, Route'
},
})
//file: `<autoroutes-directory>/some/route.ts`
//url: `http://your-host/some/route`
import { FastifyInstance } from 'fastify'
import { Resource } from 'fastify-autoroutes'
export default (fastify: FastifyInstance) => <Resource> {
get: {
handler: async (request: FastifyRequest, reply: FastifyReply) => 'Hello, Route!'
}
}
ℹ️ 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 (fastifyInstance) => ({
get: {
handler: (request, reply) => {
reply.send(`photos of user ${request.params.userId}`)
}
},
})
Method specification for attributes is available here: Method specification
ℹ️ attributes
url
andmethod
are dynamically provided
Allowed attributes mapped to Http methods in module:
- delete
- get
- head
- patch
- post
- put
- options
to skip file in routes directory, prepend the .
or _
character 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 which contains 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 💻 📖 💡 🚧 |
Gennaro 🎨 |
This project follows the all-contributors specification.
Contributions of any kind welcome!