Add methodNotAllowedCatcher Middleware and Example #6836
+38
−18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces a helper middleware,
methodNotAllowedCatcher
, to Express. This middleware allows users to easily send a 405 Method Not Allowed response with the correctAllow
header for unsupported HTTP methods on a route. It is exposed via the main Express export for convenience. An example usage is also provided.Changes
lib/methodNotAllowedCatcher.js
— Helper middleware to send 405 and set the Allow header.express.methodNotAllowedCatcher
inlib/express.js
.examples/method-not-allowed/index.js
to demonstrate usage.resolves issue #2414
Usage
Example
Run the example:
Test with curl:
Motivation
This addresses the long-standing feature request for an easy, opt-in way to handle 405 responses for routes defined with
.route()
. It is non-breaking and fully opt-in.Related Issues
Checklist
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.