消息-HTTP消息基类
软件包Mojo::Message::MyMessage;使用Mojo::Base“Mojo::Message”;子Cookie{…}sub-extract_start_line{…}子get_start_line_chunk{…}子start_line_size{…}
Mojo::消息是HTTP消息容器的抽象基类,基于副本请求7230,射频7231和RFC 2388号文件,比如Mojo::消息::请求和Mojo::消息::响应.
Mojo::消息从继承所有事件Mojo::EventEmitter并且可以发射出以下新的气体。
$msg->打开(完成=>子($msg){…});
在消息构建或分析完成后发出。
my$before=时间;$msg->on(finish=>sub($msg){$msg->headers->header('X-Parser-Time'=>Time-$before)});
$msg->打开(进度=>子($msg){…});
当消息构建或分析进行时发出。
#建筑物$msg->on(progress=>sub($msg,$state,$offset){say qq{Building“$state”at offset$offset}});#正在分析$msg->启用(进度=>订阅($msg){返回,除非我的$len=$msg->headers->content_length;我的$size=$msg->content->progress;说“进度:”,$size==$len?100:int($size/($len/100)),“%”;});
Mojo::消息实现以下属性。
我的$msg=$msg->内容;$msg=$msg->content(Mojo::content::Single->new);
消息内容,默认为Mojo::内容::单个对象。
我的$charset=$msg->default_charset;$msg=$msg->default_charset('UTF-8');
默认字符集由使用“文本”并从中提取数据应用程序/x-www-form-urlencoded
或多部分/表单数据
消息正文,默认为UTF-8型
.
我的$size=$msg->max_line_size;$msg=$msg->max_line_size(1024);
以字节为单位的最大起始线大小,默认为MOJO_MAX_LINE_SIZE(莫约_最大_线条_尺寸)
环境变量或8192
(8KiB)。
我的$size=$msg->最大消息大小;$msg=$msg->最大消息大小(1024);
最大消息大小(以字节为单位),默认为MOJO_MAX_消息_大小
环境变量或16777216
(1600万桶)。将值设置为0
将允许不确定大小的消息。
我的$version=$msg->版本;$msg=$msg->版本('1.1');
消息的HTTP版本,默认为1.1
.
Mojo::消息从继承所有方法Mojo::EventEmitter并实现了以下新功能。
我的$bytes=$msg->body;$msg=$msg->body(“你好!”);
打滑或更换“内容”.
my$params=$msg->body_params;
邮政
参数提取自应用程序/x-www-form-urlencoded
或多部分/表单数据
消息正文,通常是Mojo::参数对象。请注意,此方法缓存所有数据,因此不应在收到整个消息正文之前调用它。需要将消息正文的部分加载到内存中进行解析邮政
参数,所以您必须确保它不太大。默认情况下,请求的限制为16MiB,响应的限制为2GiB。
#获取POST参数名称和值我的$hash=$msg->body_params->to_hash;
我的$size=$msg->body_size;
内容大小(以字节为单位)。
my$bytes=$msg->buildbody;
渲染整个身体“获取body_chunk”.
我的$bytes=$msg->build_headers;
呈现所有标题“获取header_chunk”.
我的$字节=$msg->build_start_line;
渲染起始线“获取开始行块”.
我的$cookie=$msg->cookie('foo');
通常访问消息CookieMojo::Cookie::请求或Mojo::Cookie::响应物体。如果有多个cookie共享同一名称,并且您想访问不止一个cookies,可以使用“每个cookie”。请注意,此方法缓存所有数据,因此不应在收到所有标头之前调用它。
#获取cookie值说$msg->cookie('fo')->值;
我的$cookies=$msg->cookies;
访问消息Cookie。意思是在子类中重载。
我的$dom=$msg->dom;我的$收藏=$msg->dom('a[href]');
从检索消息正文“文本”然后把它变成Mojo::DOM对象,可以使用可选选择器调用该方法Mojo::DOM中的“查找”然后返回一个Mojo::系列对象。请注意,此方法缓存所有数据,因此不应在收到整个消息正文之前调用它。整个消息体需要加载到内存中才能进行解析,因此您必须确保它不会太大。默认情况下,请求的限制为16MiB,响应的限制为2GiB。
#立即执行“查找”说$msg->dom('h1,h2,h3')->map('text')->join(“\n”);#使用Mojo::DOM所提供的一切说$msg->dom->at('title')->text;说$msg->dom->at('body')->childrens->map('tag')->uniq->join(“\n”);
我的$err=$msg->错误;$msg=$msg->error({message=>'Parser error'});
获取或设置消息错误未定义
返回值表示没有错误。
#连接或分析器错误$msg->错误({message=>“连接被拒绝”});#4xx/5xx响应$msg->error({message=>'内部服务器错误',code=>500});
我的$cookie=$msg->每个cookie('foo');
类似“饼干”,但返回与数组引用同名的所有消息cookie。
#获取第一个cookie值说$msg->every_cookie('foo')->[0]->value;
我的$uploads=$msg->every_upload('foo');
类似“上传”,但返回与数组引用同名的所有文件上载。
#获取第一个上传文件的内容说$msg->every_upload('foo')->[0]->asset->slurp;
我的$bool=$msg->extract_start_line(\$str);
从字符串中提取起始线。意思是在子类中重载。
$msg=$msg->完成;
完成消息分析器/生成器。
$msg=$msg->fix_headers;
确保消息具有所有必需的标题。
my$bytes=$msg->get_body_chunk($offset);
从特定位置开始获取大块身体数据。请注意,如果内容是动态生成的,那么可能不可能两次获得相同的块。
my$bytes=$msg->get_header_chunk($offset);
从一个特定的位置开始,获取一大块头数据。请注意,此方法将完成消息。
我的$字节=$msg->get_start_line_chunk($offset);
从特定位置开始获取起始线数据块。意思是在子类中重载。
我的$size=$msg->header_size;
标头的大小(以字节为单位)。请注意,此方法将完成消息。
我的$headers=$msg->头;
消息头,通常是Mojo::标题对象。
#加长版我的$headers=$msg->content->headers;
我的$bool=$msg->已完成;
检查消息解析器/生成器是否完成。
我的$bool=$msg->is_limit_exceeded;
检查消息是否已超出“最大行大小”,“最大消息大小”,Mojo::Content中的“max_buffer_size”或Mojo::Headers中的“max_line_size”.
我的$value=$msg->json;我的$value=$msg->json('/foo/bar');
直接使用解码JSON消息体Mojo::JSON如果可能未定义
返回值表示一个空无效的
或者解码失败。可选JSON指针可用于提取特定值Mojo::JSON::指针。请注意,此方法缓存所有数据,因此不应在收到整个消息正文之前调用它。整个消息体需要加载到内存中才能进行解析,因此您必须确保它不会太大。默认情况下,请求的限制为16MiB,响应的限制为2GiB。
#提取JSON值说$msg->json->{foo}{bar}[23];比如$msg->json('/foo/bar/23');
$msg=$msg->解析('HTTP/1.1 200 OK…');
分析消息块。
$msg=$msg->save_to('/some/path/index.html');
将邮件正文保存到文件中。
我的$size=$msg->start_line_size;
起始线的大小(字节)。意思是在子类中重载。
我的$str=$msg->text;
检索“主体”并尝试用Mojo::Content中的“charset”或“默认字符集”.
我的$str=$msg->to_string;
呈现整个消息。请注意,此方法将完成消息,如果内容是动态生成的,则可能无法两次呈现同一消息。
my$upload=$msg->上传('foo');
访问多部分/表单数据
文件上传,通常Mojo::上传物体。如果有多个上传共享相同的名称,并且您想访问不止一个上传,可以使用“every_upload”(每次上传)。请注意,此方法缓存所有数据,因此不应在收到整个消息正文之前调用它。
#获取上传文件的内容说$msg->upload('fo')->asset->slurp;
我的$uploads=$msg->uploads;
全部多部分/表单数据
文件上传,通常Mojo::上传物体。
#所有上传的名称说出@{$msg->uploads}的$_->name;
Mojolicious公司,Mojolicious::指南,https://mojolicious.org.