Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Add methodNotAllowedCatcher Middleware and Example#6836

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
NalinDalal wants to merge1 commit intoexpressjs:master
base:master
Choose a base branch
Loading
fromNalinDalal:master

Conversation

@NalinDalal
Copy link

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

  • New Middleware:lib/methodNotAllowedCatcher.js — Helper middleware to send 405 and set the Allow header.
  • Export: Exposed asexpress.methodNotAllowedCatcher inlib/express.js.
  • Example: Addedexamples/method-not-allowed/index.js to demonstrate usage.
  • Dependencies: No new dependencies required.

resolves issue#2414

Usage

constexpress=require('express');app.route('/user/:id').get(getUser).put(updateUser).delete(deleteUser).all(express.methodNotAllowedCatcher);

Example

Run the example:

node examples/method-not-allowed/index.js

Test with curl:

curl -i http://localhost:3000/user/1# 200 OK, user datacurl -i -X PUT http://localhost:3000/user/1# 200 OK, updatedcurl -i -X DELETE http://localhost:3000/user/1# 200 OK, deletedcurl -i -X POST http://localhost:3000/user/1# 405 Method Not Allowed, Allow: GET, PUT, DELETE

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

  • Middleware implemented
  • Exported via main Express object
  • Example provided
  • Tested via curl

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.

Copy link
Member

@bjohansebasbjohansebas left a comment
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Thanks for your contribution. Please don’t make aesthetic changes, and could you explain better why you’re adding this function?

I think this is something Express shouldn’t include, In any case, it would go in the router. I haven’t looked into the issue in depth yet, so I can’t give an opinion for now, but if you want to move forward, it would be best to open the PR in the router repository, and without aesthetic changes.

wendyyuchensun reacted with thumbs up emoji
@NalinDalal
Copy link
Author

Thank you for the feedback and for referencing the history in#2414 .

I understand that making 405 handling automatic in.route() would be a breaking change, and that previous discussions have leaned toward opt-in solutions or providing examples. That’s why I’ve moved the middleware to an example, following the approach suggested inpillarjs/router#63 and related discussions.

This example provides a reusable, opt-in middleware for 405 responses with the correct Allow header, so users can easily add this behavior to their routes without changes to Express core.

If you’d prefer, I’m happy to move this to the router repo or publish it as a standalone utility. Please let me know how you’d like to proceed, or if you have any other suggestions!

@shubhanshu2103
Copy link

Please assign this to me.

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@bjohansebasbjohansebasbjohansebas requested changes

Requested changes must be addressed to merge this pull request.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

3 participants

@NalinDalal@shubhanshu2103@bjohansebas

[8]ページ先頭

©2009-2025 Movatter.jp