A simple and fully customizable Fastify plugin for handling 405 gracefully.
By default Fastify suppress error 405 and with return 404 instead. A 405 error would improve the development experience.
fastify-405 was built to solve this issue, but it requires you to input a RegExp for the route you want to handle 405.
This plugin is meant to read from your current route setting, and create routes that return 405 automatically.
npm add better-fastify-405
yarn add better-fastify-405
//app.js
import fastify, { FastifyRequest, FastifyReply, FastifyInstance, HookHandlerDoneFunction, RouteOptions } from 'fastify';
const app: FastifyInstance = fastify({
logger: true
})
//Other plugins
app.register(import("fastify-etag"))
app.register(import('plugins/better-fastify-405'), {
routes: [
//Required.
//Register all your route here, or else this plugin would not work.
import('./routes/index'),
import('./routes/protected')
//All the route will be registered inside the plugin. Do not use app.register() here.
],
filterCallback: ({ route, method }) => {
// Optional
// A callback to allow you filter out specific route and specific method from assigning it to 405
//Route: route registered
//Method: method available to apply 405
return true
}
})
A function allowCORS
is provided to help you not mark OPTIONS
for 405.
import better405, { allowCORS } from 'better-fastify-405'
import fastify, { FastifyRequest, FastifyReply, FastifyInstance, HookHandlerDoneFunction, RouteOptions } from 'fastify';
const app: FastifyInstance = fastify({
logger: true
})
//Other plugins
app.register(import("fastify-etag"))
app.register(better405, {
routes: [
import('./routes/index'),
import('./routes/protected')
],
filterCallback: allowCORS
})