NAME
- Catalyst::Action::REST - Automated REST Method Dispatching
+ Catalyst::Action::Serialize::Data::Serializer - Serialize with
+ Data::Serializer
SYNOPSIS
- sub foo :Local :ActionClass('REST') {
- ... do setup for HTTP method specific handlers ...
- }
+ package MyApp::Controller::Foo;
- sub foo_GET {
- ... do something for GET requests ...
- }
+ use Moose;
+ use namespace::autoclean;
- # alternatively use an Action
- sub foo_PUT : Action {
- ... do something for PUT requests ...
- }
+ BEGIN { extends 'Catalyst::Controller' }
+
+ __PACKAGE__->config(
+ 'default' => 'text/x-yaml',
+ 'stash_key' => 'rest',
+ 'map' => {
+ 'text/x-yaml' => 'YAML',
+ 'application/json' => 'JSON',
+ 'text/x-data-dumper' => [ 'Data::Serializer', 'Data::Dumper' ],
+ },
+ );
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. First it will try dispatching to
- an action with the generated name, and failing that it will try to
- dispatch to a regular method.
-
- 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 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 otherwise. Make sure
- "AllowEncodedSlashes On" is in your httpd.conf file in order for
- this to run smoothly.
+ This module implements a serializer for use with "Data::Dumper" and
+ others. It was factored out of Catalyst::Action::REST because it is
+ unlikely to be widely used and tends to break tests, be insecure, and is
+ generally weird. Use at your own risk.
AUTHOR
Adam Jacob <adam@stalecoffee.org>, with lots of help from mst and
(<http://www.marchex.com>)
CONTRIBUTORS
- Arthur Axel "fREW" Schmidt <frioux@gmail.com>
+ Tomas Doran (t0m) <bobtfish@bobtfish.net>
+
+ John Goulah
Christopher Laco
- Luke Saunders
+ Daisuke Maki <daisuke@endeworks.jp>
- John Goulah
+ Hans Dieter Pearcey
- Daisuke Maki <daisuke@endeworks.jp>
+ Brian Phillips <bphillips@cpan.org>
+
+ Dave Rolsky <autarch@urth.org>
+
+ Luke Saunders
+
+ Arthur Axel "fREW" Schmidt <frioux@gmail.com>
J. Shirley <jshirley@gmail.com>
- Hans Dieter Pearcey
+ Gavin Henry <ghenry@surevoip.co.uk>
- Tomas Doran (t0m) <bobtfish@bobtfish.net>
+ Gerv http://www.gerv.net/
+
+ Colin Newell <colin@opusvl.com>
+
+ Wallace Reis <wreis@cpan.org>
COPYRIGHT
- Copyright the above named AUTHOR and CONTRIBUTORS
+ Copyright (c) 2006-2013 the above named AUTHOR and CONTRIBUTORS
LICENSE
You may distribute this code under the same terms as Perl itself.