HTTP::Body(3)
πΈ NAME πΈ
HTTP::Body β HTTP Body Parser. Yep, that's the manual name, and this whole page is User Contributed Perl Documentation for HTTP::Body(3). okay so let's get into it, bestie π
β¨ SYNOPSIS β¨
use HTTP::Body;
sub handler : method {
my ( $class, $r ) = @_;
my $content_type = $r->headers_in->get('Content-Type');
my $content_length = $r->headers_in->get('Content-Length');
my $body = HTTP::Body->new( $content_type, $content_length );
my $length = $content_length;
while ( $length ) {
$r->read( my $buffer, ( $length < 8192 ) ? $length : 8192 );
$length -= length($buffer);
$body->add($buffer);
}
my $uploads = $body->upload; # hashref
my $params = $body->param; # hashref
my $param_order = $body->param_order # arrayref
my $body = $body->body; # IO::Handle
}
π DESCRIPTION π
So like, HTTP::Body parses chunks of HTTP POST data, and it supports application/octet-stream, application/json, application/x-www-form-urlencoded, and multipart/form-data. versatile queen behavior π
Chunked bodies are supported by not passing a length value to new(). iykyk β¨
It is currently used by Catalyst, Dancer, Maypole, Web::Simple and Jedi. main character modules only π
π«Ά NOTES π«Ά
When parsing multipart bodies, temporary files are created to store any uploaded files. Real talk: you must delete these temporary files yourself after processing them, or set $body->cleanup(1) to automatically delete them at DESTROY-time.
β οΈ Do not forget the temp files, bestie. They are literally your responsibility unless you set $body->cleanup(1).
With version 1.23, we have changed the basic behavior of how temporary files are prepared for uploads. The extension of the file is no longer transferred to the temporary file, the extension will always be .upload. We have also introduced variables that make it possible to set the behavior as required. slay for configurability π
$HTTP::Body::MultiPart::file_temp_suffixβ This is the extension that is given to all multipart files. The default setting here is.upload. If you want the old behavior from before version1.23, simply undefine the value here.$HTTP::Body::MultiPart::basename_regexpβ This is the regexp used to determine out the file extension. This is of course no longer necessary, unless you undefineHTTP::Body::MultiPart::file_temp_suffix.$HTTP::Body::MultiPart::file_temp_templateβ This gets passed through to theFile::TempTEMPLATE parameter. There is no special default in our module.%HTTP::Body::MultiPart::file_temp_parametersβ In this hash you can add up custom settings for theFile::Tempinvokation. Those override every other setting.
π METHODS π
okay bestie, method-by-method, let's go β¨
newβ Constructor. Takes content type and content length as parameters, returns aHTTP::Bodyobject.addβ Add string to internal buffer. Will callspinunless done. returns length before adding self.bodyβ accessor for the body.chunkedβ Returns1if the request is chunked.cleanupβ Set to1to enable automatic deletion of temporary files atDESTROY-time.content_lengthβ Returns the content-length for the body data if known. Returns-1if the request is chunked.content_typeβ Returns the content-type of the body data.initβ return self.lengthβ Returns the total length of data we expect to read if known. In the case of a chunked request, returns the amount of data read so far.trailing_headersβ If a chunked request body had trailing headers,trailing_headerswill return anHTTP::Headersobject populated with those headers.spinβ Abstract method to spin the io handle.stateβ Returns the current state of the parser.paramβ Get/set body parameters.uploadβ Get/set file uploads.part_dataβ Just like'param'but gives you a hash of the full data associated with the part in a multipart type POST/PUT. Example:
{
data => "test",
done => 1,
headers => {
"Content-Disposition" => "form-data; name=\"arg2\"",
"Content-Type" => "text/plain"
},
name => "arg2",
size => 4
}
tmpdirβ Specify a different path for temporary files. Defaults to the system temporary path.param_orderβ Returns the array ref of the param keys in the order how they appeared on the body
π SUPPORT π
Since its original creation this module has been taken over by the Catalyst development team. If you need general support using this module:
- IRC: Join
#catalystonirc.perl.org. - Mailing Lists:
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
If you want to contribute patches, these will be your primary contact points:
- IRC: Join
#catalyst-devonirc.perl.org. - Mailing Lists:
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst-dev
community support is giving teamwork, fr fr π«Ά
π AUTHOR π
- Christian Hansen,
chansen@cpan.org - Sebastian Riedel,
sri@cpan.org - Andy Grundman,
andy@hybridized.org
π CONTRIBUTORS π
- Simon Elliott
cpan@papercreatures.com - Kent Fredric
kentnl@cpan.org - Christian Walde
walde.christian@gmail.com - Torsten Raudssus
torsten@raudssus.de
π¦ LICENSE π¦
This library is free software. You can redistribute it and/or modify it under the same terms as perl itself. periodt π±
okay that's the whole page, bestie β this one came from perl v5.42.0, dated 2024-03-31, and the manual is HTTP::Body(3), periodt πβ¨
π¦ where this page comes from
- opensuse-leap 16.0: perl-HTTP-Body 1.230.0-bp160.1.11 Β· Artistic-1.0 OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms