Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/winston0410/better-fastify-405
A better plugin for handling 405 in Fastify.
https://github.com/winston0410/better-fastify-405
fastify fastify-405 fastify-plugin
Last synced: about 1 month ago
JSON representation
A better plugin for handling 405 in Fastify.
- Host: GitHub
- URL: https://github.com/winston0410/better-fastify-405
- Owner: winston0410
- Created: 2021-03-29T02:17:22.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2021-03-30T08:51:17.000Z (over 3 years ago)
- Last Synced: 2024-10-12T13:17:03.768Z (2 months ago)
- Topics: fastify, fastify-405, fastify-plugin
- Language: TypeScript
- Homepage:
- Size: 119 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Better Fastify 405
A simple and fully customizable Fastify plugin for handling 405 gracefully.
[![Maintainability](https://api.codeclimate.com/v1/badges/23557cfcd9416cc4f098/maintainability)](https://codeclimate.com/github/winston0410/better-fastify-405/maintainability) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/a88113b4d6ac4acbb90be5864aacae27)](https://www.codacy.com/gh/winston0410/better-fastify-405/dashboard?utm_source=github.com&utm_medium=referral&utm_content=winston0410/better-fastify-405&utm_campaign=Badge_Grade) [![Test Coverage](https://api.codeclimate.com/v1/badges/23557cfcd9416cc4f098/test_coverage)](https://codeclimate.com/github/winston0410/better-fastify-405/test_coverage)
## Why do I need this?
By default [Fastify suppress error 405](https://github.com/fastify/fastify/issues/917) and with return 404 instead. A 405 error would improve the development experience.
[fastify-405](https://github.com/Eomm/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.
## Installation
```shell
npm add better-fastify-405
``````shell
yarn add better-fastify-405
```## Usage
```javascript
//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
}
})
```### Do not mark `OPTIONS` route with 405
A function `allowCORS` is provided to help you not mark `OPTIONS` for 405.
```javascript
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
})
```