模块:莫霍::消息

名称

Mojo::Message-HTTP消息基类

简介

软件包Mojo::Message::MyMessage;使用Mojo::Base“Mojo::Message”;子Cookie{…}sub-extract_start_line{…}子get_start_line_chunk{…}子start_line_size{…}

说明

Mojo::消息是HTTP消息容器的抽象基类,基于副本请求7230,副本请求7231RFC 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(“你好!”);

打滑或更换“内容”.

正文参数(_P)

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公司

我的$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->error;$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('fo');

类似“上传”,但返回与数组引用同名的所有文件上载。

#获取第一个上传文件的内容说$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;

已完成(_F)

我的$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…');

分析消息块。

保存到(_T)

$msg=$msg->save_to('/some/path/index.html');

将消息正文保存到文件中。

启动_行_大小

我的$size=$msg->start_line_size;

起始线的大小(字节)。意思是在子类中重载。

文本

我的$str=$msg->text;

检索“主体”并尝试用Mojo::Content中的“charset”“默认字符集”.

到字符串(_S)

我的$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.