fastify-method-not-allowed
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

Fastify Method Not Allowed

js-semistandard-style Build Status

fastify-method-not-allowed is a plugin for returning 405 status code for routes instead of default 404.

Note you have to register this plugin before registering any routes, as it uses onRoute hook, so needs to "collect" them.

Install

npm install fastify-method-not-allowed

Usage

Require the module and just register it as any other fastify plugin.

const methodNotAllowed = require('fastify-method-not-allowed');
 
server.register(methodNotAllowed);
 
server.get('/', (req, res) => res.send('Hello World'));
 
fastify.listen(3000);
 
/*
curl -X POST localhost:3000
 
This will return statusCode 405 instead of the 404 default response
*/

API

register plugin

const methodNotAllowed = require('fastify-method-not-allowed');
 
server.register(methodNotAllowed, {
    responses: {
        404: 'Not Found',
        405: 'Method Not Allowed',
    },
});

register options

  • prefix: prefix on which path this plugin will be enabled
    You can register the plugin multiple times with different prefixes if you want to apply different responses on different paths

  • responses
    Default values

    • 404
    {
        "message": "Route <method>:<url> not found",
        "error": "Not Found",
        "statusCode": 404
    }
    • 405
    {
        "message": "Route <method>:<url> not allowed",
        "error": "Method Not Allowed",
        "statusCode": 405
    }

    You can override those values by providing either a value or a function.

    • For 404 you have access to the request object so you can pass a function e.g. (req)=>"Route${req.url}not found".
    • For 405 you have access to the request and allowedMethods so you can pass a function e.g. (req,methods)=>"Route${req.url}allowed only ${methods}".
  • setNotFoundHandlerOptions You can pass options to fastify handler. For more information.

Typescript

In order to use this plugin you need to enable the flag "esModuleInterop": true in tsconfig.json.

then you can import it

import methodNotAllowed from 'fastify-method-not-allowed';

Note:

This plugin uses the setNotFoundHandler handler so you won't be able to re-use this handler in your own service at least with the same prefix.

Changelog

CHANGELOG.md

Issues

For any issues.

License

MIT License

Dependencies (2)

Dev Dependencies (7)

Package Sidebar

Install

npm i fastify-method-not-allowed

Weekly Downloads

28

Version

1.0.2

License

MIT

Unpacked Size

9.09 kB

Total Files

7

Last publish

Collaborators

  • gkampitakis