Apache2-API
view release on metacpan or search on metacpan
lib/Apache2/API/Response.pm view on Meta::CPAN
=head2 headers
Gets or sets the HTTP response headers using L<APR::Table> by calling L</Apache2::RequestRec/err_headers_out>
This takes zero, one or sets or C<< key => value >> pairs.
When no argument is provided, this returns the L<APR::Object>.
When one argument is provided, it returns the corresponding HTTP header value, if any.
You can set multiple key-value pairs, like so:
$resp->headers( $var1 => $val1, $var2 => $val2 );
If a value provided is C<undef>, it will remove the corresponding HTTP headers.
With the L<APR::Table> object, you can access and set header fields directly, such as:
my $accept = $resp->headers->{Accept};
$resp->headers->{Accept} = 'application/json';
$resp->headers->{Accept} = undef; # unset it
or
my $accept = $resp->headers->get( 'Accept' );
$resp->headers->set( Accept => 'application/json' );
$resp->headers->unset( 'Accept' );
$resp->headers->add( Vary => 'Accept-Encoding' );
# Very useful for this header
$resp->headers->merge( Vary => 'Accept-Encoding' );
# Empty the headers
$resp->headers->clear;
use Apache2::API;
# to merge: multiple values for the same key are flattened into a comma-separated list.
$resp->headers->compress( APR::Const::OVERLAP_TABLES_MERGE );
# to overwrite: each key will be set to the last value seen for that key.
$resp->headers->compress( APR::Const::OVERLAP_TABLES_SET );
my $table = $resp->headers->copy( $resp2->pool );
my $headers = $resp->headers;
$resp->headers->do(sub
{
my( $key, $val ) = @_;
# Do something
# return(0) to abort
}, keys( %$headers ) );
# or without any filter keys
$resp->headers->do(sub
{
my( $key, $val ) = @_;
# Do something
# return(0) to abort
});
# To prepare a table of 20 elements, but the table can still grow
my $table = APR::Table::make( $resp->pool, 20 );
my $table2 = $resp2->headers;
# overwrite any existing keys in our table $table
$table->overlap( $table2, APR::Const::OVERLAP_TABLES_SET );
# key, value pairs are added, regardless of whether there is another element with the same key in $table
$table->overlap( $table2, APR::Const::OVERLAP_TABLES_MERGE );
my $table3 = $table->overlay( $table2, $pool3 );
See L<APR::Table> for more information.
=head2 headers_out
Returns or sets the C<< key => value >> pairs of outgoing HTTP headers, only on 2xx responses.
See also L</err_headers_out>, which allows to set headers for non-2xx responses and persist across internal redirects.
More information at L<Apache2::RequestRec>
=head2 internal_redirect
Given a C<URI> object or a uri path string, this redirect the current request to some other uri internally.
If a C<URI> object is given, its C<path> method will be used to get the path string.
$resp->internal_redirect( $new_uri );
In case that you want some other request to be served as the top-level request instead of what the client requested directly, call this method from a handler, and then immediately return L<Apache2::Const::OK>. The client will be unaware the a differe...
See L<Apache2::SubRequest> for more information.
=head2 internal_redirect_handler
Identical to L</internal_redirect>, plus automatically sets C<< $resp->content_type >> is of the sub-request to be the same as of the main request, if C<< $resp->handler >> is true.
=head2 is_info
Given a HTTP code integer, this will return true if the code is comprised between C<100> and less than C<200>, false otherwise.
=head2 is_success
Given a HTTP code integer, this will return true if the code is comprised between C<200> and less than C<300>, false otherwise.
=head2 is_redirect
Given a HTTP code integer, this will return true if the code is comprised between C<300> and less than C<400>, false otherwise.
=head2 is_error
Given a HTTP code integer, this will return true if the code is comprised between C<400> and less than C<600>, false otherwise.
=head2 is_client_error
Given a HTTP code integer, this will return true if the code is comprised between C<400> and less than C<500>, false otherwise.
=head2 is_server_error
Given a HTTP code integer, this will return true if the code is comprised between C<500> and less than C<600>, false otherwise.
=head2 keep_alive
Sets or gets the HTTP header field C<Keep-Alive>
See L<https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive>
=head2 last_modified
Sets or gets the HTTP header field C<Last-Modified>
( run in 1.476 second using v1.01-cache-2.11-cpan-2ed5026b665 )