---
name: "Catalyst::ActionRole::HTTPMethods"
section: "3pm"
platform: "linux"
package: "libcatalyst-perl"
version: "5.90132-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catalyst::ActionRole::HTTPMethods"
---

# Catalyst::ActionRole::HTTPMethods(3pm)

Match on HTTP Methods

## NAME

Catalyst::ActionRole::HTTPMethods - Match on HTTP Methods

## SYNOPSIS

```
    package MyApp::Web::Controller::MyController;
    use Moose;
    use MooseX::MethodAttributes;
    extends 'Catalyst::Controller';
    sub user_base : Chained('/') CaptureArg(0) { ... }
      sub get_user     : Chained('user_base') Args(1) GET { ... }
      sub post_user    : Chained('user_base') Args(1) POST { ... }
      sub put_user     : Chained('user_base') Args(1) PUT { ... }
      sub delete_user  : Chained('user_base') Args(1) DELETE { ... }
      sub head_user    : Chained('user_base') Args(1) HEAD { ... }
      sub options_user : Chained('user_base') Args(1) OPTIONS { ... }
      sub patch_user   : Chained('user_base') Args(1) PATCH { ... }
      sub post_and_put : Chained('user_base') POST PUT Args(1) { ... }
      sub method_attr  : Chained('user_base') Method('DELETE') Args(0) { ... }
    __PACKAGE__->meta->make_immutable;
```

## DESCRIPTION

This is an action role that lets your Catalyst::Action match on standard HTTP methods, such as GET, POST, etc.

Since most web browsers have limited support for rich HTTP Method vocabularies we use Plack::Middleware::MethodOverride which allows you to 'tunnel' your request method over POST  This works in two ways.  You can set an extension HTTP header `"X-HTTP-Method-Override"` which will contain the value of the desired request method, or you may set a search query parameter `"x-tunneled-method"`.  Remember, these only work over HTTP Request type POST.  See Plack::Middleware::MethodOverride for more.

## REQUIRES

This role requires the following methods in the consuming class.

### match

### match\_captures

Returns 1 if the action matches the existing request and zero if not.

## METHODS

This role defines the following methods

### match

### match\_captures

Around method modifier that return 1 if the request method matches one of the allowed methods (see "http\_methods") and zero otherwise.

### allowed\_http\_methods

An array of strings that are the allowed http methods for matching this action normalized as noted above (using X-Method\* overrides).

### list\_extra\_info

Adds a key =\> \[@values\] "HTTP\_METHODS" whose value is an ArrayRef of sorted allowed methods to the -\>list\_extra\_info HashRef.  This is used primarily for debugging output.

### \_has\_expected\_http\_method ($expected)

Private method which returns 1 if `$expected` matches one of the allowed in "http\_methods" and zero otherwise.

## AUTHORS

Catalyst Contributors, see Catalyst.pm

## COPYRIGHT

This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
