NAME
    Plack::Middleware::MethodOverride - Override REST methods to Plack apps
    via POST
SYNOPSIS
    In your Plack app:
      use Plack::Builder;
      builder {
          enable MethodOverride;
          $app;
      };
    PUT via a query parameter in your POST forms:
      
    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
    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.
AUTHOR
    Tatsuhiko Miyagawa
    David E. Wheeler
    Aristotle Pagaltzis
COPYRIGHT
    2015- Tatsuhiko Miyagawa, David E. Wheeler, Aristotle Pagaltzis
LICENSE
    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.
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  for the shove in this direction, to
    Matt S Trout  for suggesting that it be
    implemented as middleware, and to Hans Dieter Pearcey
     for convincing me not to parse body
    parameters.