Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Plack::Middleware::MetUservContributed PerPlack::Middleware::MethodOverride(3)

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

       version 0.20

       In your Plack app:

	 use Plack::Builder;
	 builder {
	     enable MethodOverride;

       PUT via a query parameter in your POST forms:

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

       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'

       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:

       o   GET

       o   POST

       o   HEAD

       o   PUT

       o   DELETE

       o   OPTIONS

       o   TRACE

       o   CONNECT

       o   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.

       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';

       Specifies the HTTP header name which specifies the overriding HTTP

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

       Specifies the query parameter name to specify the overriding HTTP

       Defaults	to "x-tunneled-method".

       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

       o   Tatsuhiko Miyagawa <>

       o   David E. Wheeler <>

       o   Aristotle Pagaltzis <>

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.32.0			  2018-05-Plack::Middleware::MethodOverride(3)

Name | Version | Synopsis | Description | Configuration | Acknowledgements | Authors | Copyright and License

Want to link to this manual page? Use this URL:

home | help