NAME
Catalyst::Action::REST - Automated REST Method Dispatching
SYNOPSIS
sub foo :Local :ActionClass('REST') {
... do setup for HTTP method specific handlers ...
}
sub foo_GET {
... do something for GET requests ...
}
sub foo_PUT {
... do somethign for PUT requests ...
}
DESCRIPTION
This Action handles doing automatic method dispatching for REST requests. It takes a normal Catalyst action, and changes the dispatch to append an underscore and method name.
For example, in the synopsis above, calling GET on "/foo" would result in the foo_GET method being dispatched.
If a method is requested that is not implemented, this action will return a status 405 (Method Not Found). It will populate the "Allow" header with the list of implemented request methods. You can override this behavior by implementing a custom 405 handler like so:
sub foo_not_implemented {
... handle not implemented methods ...
}
If you do not provide an _OPTIONS subroutine, we will automatically respond with a 200 OK. The "Allow" header will be populated with the list of implemented request methods.
It is likely that you really want to look at Catalyst::Controller::REST, which brings this class together with automatic Serialization of requests and responses.
When you use this module, the request class will be changed to Catalyst::Request::REST.
METHODS
- dispatch
-
This method overrides the default dispatch mechanism to the re-dispatching mechanism described above.
SEE ALSO
You likely want to look at Catalyst::Controller::REST, which implements a sensible set of defaults for a controller doing REST.
Catalyst::Action::Serialize, Catalyst::Action::Deserialize
TROUBLESHOOTING
- Q: I'm getting a "415 Unsupported Media Type" error. What gives?!
-
A: Most likely, you haven't set Content-type equal to "application/json", or one of the accepted return formats. You can do this by setting it in your query string thusly: ?content-type=application%2Fjson (where %2F == / uri escaped).
**NOTE** Apache will refuse %2F unless configured otherise. Make sure AllowEncodedSlashes On is in your httpd.conf file in order for this to run smoothly.
MAINTAINER
J. Shirley <jshirley@gmail.com>
CONTRIBUTORS
Christopher Laco
Luke Saunders
John Goulah
Daisuke Maki <daisuke@endeworks.jp>
AUTHOR
Adam Jacob <adam@stalecoffee.org>, with lots of help from mst and jrockway
Marchex, Inc. paid me while I developed this module. (http://www.marchex.com)
LICENSE
You may distribute this code under the same terms as Perl itself.
2 POD Errors
The following errors were encountered while parsing the POD:
- Around line 174:
=cut found outside a pod block. Skipping to next block.
- Around line 179:
You forgot a '=back' before '=head1'