---
name: "Catalyst::Action::REST::ForBrowsers"
section: "3pm"
platform: "linux"
package: "libcatalyst-action-rest-perl"
version: "1.21-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catalyst::Action::REST::ForBrowsers"
---

# Catalyst::Action::REST::ForBrowsers(3pm)

Automated REST Method Dispatching that Accommodates Browsers

## NAME

Catalyst::Action::REST::ForBrowsers - Automated REST Method Dispatching that Accommodates Browsers

## SYNOPSIS

```
    sub foo :Local :ActionClass('REST::ForBrowsers') {
      ... do setup for HTTP method specific handlers ...
    }
    sub foo_GET : Private {
      ... do something for GET requests ...
    }
    sub foo_GET_html : Private {
      ... do something for GET requests from browsers ...
    }
    sub foo_PUT : Private {
      ... do something for PUT requests ...
    }
```

## DESCRIPTION

This class subclasses Catalyst::Action::REST to add an additional dispatching hook. If the request is a GET request *and* the request looks like it comes from a browser, it tries to dispatch to a `"GET_html"` method before trying to the `"GET"` method instead. All other HTTP methods are dispatched in the same way.

For example, in the synopsis above, calling GET on "/foo" from a browser will end up calling the `"foo_GET_html"` method. If the request is *not* from a browser, it will call `"foo_GET"`.

See Catalyst::Action::REST for more details on dispatching details.

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

This class automatically adds the Catalyst::TraitFor::Request::REST::ForBrowsers role to your request class.

## CONTRIBUTORS

Dave Rolsky \<autarch@urth.org\>

## COPYRIGHT

Copyright the above named AUTHOR and CONTRIBUTORS

## LICENSE

You may distribute this code under the same terms as Perl itself.
