@jvddavid/fastify-autoroutes v3.0.5
fastify-autoroutes

   
:star: Thanks to everyone who has starred the project, it means a lot!
Plugin to handle routes in fastify automatically based on directory structure.
:newspaper: Full Documentation
:rocket: Install
npm install --save fastify-autoroutes:blue_book: Usage
Register plugin
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
})Create file in autoroutes directory
//file: `<autoroutes-directory>/some/route.js`
//url:  `http://your-host/some/route`
export default (fastifyInstance) => ({
  get: {
    handler: async (request, reply) => 'Hello, Route'
  },
})Using typescript support for module
//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!'
  }
}Accepts params in autoroutes
:information_source: file/directory name must follow syntax
:paramNameor{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}`)
    }
  },
}):arrow_forward: Route module definition
Method specification for attributes is available here: Method specification
:information_source: attributes
urlandmethodare dynamically provided
Allowed attributes mapped to Http methods in module:
- delete
- get
- head
- patch
- post
- put
- options
:arrow_forward: Skipping files
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:warning: also any
*.test.jsand*.test.tsare 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
:page_facing_up: License
Licensed under MIT
:sparkles: Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification.
Contributions of any kind welcome!