Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gkampitakis/fastify-method-not-allowed
Fastify plugin handling method not allowed for routes
https://github.com/gkampitakis/fastify-method-not-allowed
fastify fastify-plugin npm-package
Last synced: 2 days ago
JSON representation
Fastify plugin handling method not allowed for routes
- Host: GitHub
- URL: https://github.com/gkampitakis/fastify-method-not-allowed
- Owner: gkampitakis
- License: mit
- Created: 2020-11-14T08:26:25.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-06-09T00:43:40.000Z (over 2 years ago)
- Last Synced: 2024-12-21T08:34:54.193Z (about 1 month ago)
- Topics: fastify, fastify-plugin, npm-package
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/fastify-method-not-allowed
- Size: 14.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fastify Method Not Allowed
[![js-semistandard-style](https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg)](https://github.com/standard/semistandard)
`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](https://www.fastify.io/docs/v3.7.x/Hooks/#onroute) hook, so needs to "collect" them.
## Install
```bash
npm install fastify-method-not-allowed
```## Usage
Require the module and just register it as any other fastify plugin.
```javascript
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:3000This will return statusCode 405 instead of the 404 default response
*/
```## API
### register plugin
```javascript
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
```json
{
"message": "Route : not found",
"error": "Not Found",
"statusCode": 404
}
```- 405
```json
{
"message": "Route : 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](https://www.fastify.io/docs/latest/Server/#setnotfoundhandler).
## Typescript
In order to use this plugin you need to enable the flag `"esModuleInterop": true` in `tsconfig.json`.
then you can import it
```typescript
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`.
### Issues
For any [issues](https://github.com/gkampitakis/fastify-method-not-allowed/issues).
## License
MIT License