Provided by: libplack-middleware-methodoverride-perl_0.20-2_all bug

Name

       Plack::Middleware::MethodOverride - Override REST methods to Plack apps via POST

Version

       version 0.20

Synopsis

       In your Plack app:

         use Plack::Builder;
         builder {
             enable MethodOverride;
             $app;
         };

       PUT via a query parameter in your POST forms:

         <form method="POST" action="/foo?x-tunneled-method=PUT">
           <!-- ... -->
         </form>

       Or override it via the "X-HTTP-Method-Override" header in a request:

         my $req = HTTP::Request->new(POST => '/foo', [
             'X-HTTP-Method-Override' => 'PUT'
         ]);

Description

       Writing REST <http://en.wikipedia.org/wiki/Representational_State_Transfer>ful apps is a good thing, but
       if you're also trying to support web browsers, it would be nice not to be reduced to "GET" and "POST" for
       everything.

       This middleware allows for "POST" requests that pretend to be something else: by adding either a header
       named "X-HTTP-Method-Override" to the request, or a query parameter named "x-tunneled-method" to the URI,
       the client can say what method it actually meant. That is, as long as it meant one of these:

       •   GET

       •   POST

       •   HEAD

       •   PUT

       •   DELETE

       •   OPTIONS

       •   TRACE

       •   CONNECT

       •   PATCH

       If  so,  then  the  "REQUEST_METHOD"  in  the PSGI environment will be replaced with the client's desired
       value. The original request method is always stored under the "plack.original_request_method" key.

Configuration

       These are the named arguments you can pass to "new". Or, more  likely,  on  the  "enable"  line  in  your
       "builder" block, as in

          enable 'MethodOverride', header => 'X-HTTP-Method', param => 'my_method';

   "header"
       Specifies the HTTP header name which specifies the overriding HTTP method.

       Defaults to "X-HTTP-Method-Override", as used by Google for its APIs.

   "param"
       Specifies the query parameter name to specify the overriding HTTP method.

       Defaults to "x-tunneled-method".

Acknowledgements

       This  module  gleefully steals from Catalyst::TraitFor::Request::REST::ForBrowsers by Dave Rolsky and the
       original     version     by     Tatsuhiko     Miyagawa      (which      in      turn      stole      from
       HTTP::Engine::Middleware::MethodOverride).  Thanks  to  Aristotle Pagaltzis <http://plasmasturm.org/> for
       the shove in this direction, to  Matt  S  Trout  <http://www.trout.me.uk/>  for  suggesting  that  it  be
       implemented as middleware, and to Hans Dieter Pearcey <http://www.weftsoar.net/> for convincing me not to
       parse body parameters.

Authors

       •   Tatsuhiko Miyagawa <miyagawa@bulknews.net>

       •   David E. Wheeler <david@justatheory.com>

       •   Aristotle Pagaltzis <pagaltzis@gmx.de>

Copyright and License

       This software is copyright (c) 2015 by Tatsuhiko Miyagawa, David E. Wheeler, Aristotle Pagaltzis.

       This  is  free  software;  you  can  redistribute  it and/or modify it under the same terms as the Perl 5
       programming language system itself.

perl v5.36.0                                       2022-12-04             Plack::Middleware::MethodOverride(3pm)