Mojo::Transaction::HTTP

作者: JSON_NULL | 来源:发表于2017-09-29 17:13 被阅读4次

简介

use Mojo::Transaction::HTTP;

# Client
my $tx = Mojo::Transaction::HTTP->new;
$tx->req->method('GET');
$tx->req->url->parse('http://example.com');
$tx->req->headers->accept('application/json');
say $tx->res->code;
say $tx->res->headers->content_type;
say $tx->res->body;
say $tx->remote_address;

# Server
my $tx = Mojo::Transaction::HTTP->new;
say $tx->req->method;
say $tx->req->url->to_abs;
say $tx->req->headers->accept;
say $tx->remote_address;
$tx->res->code(200);
$tx->res->headers->content_type('text/plain');
$tx->res->body('Hello World!');

Mojo :: Transaction :: HTTP是基于RFC 7230和RFC 7231的 HTTP事务的容器。

事件

Mojo::Transaction::HTTP继承了Mojo::Transaction中的所有事件,并实现了以下事件。

request

$tx->on(request => sub {
  my $tx = shift;
  ...
});

当一个请求准备好需要发起时触发此事件。

$tx->on(request => sub {
  my $tx = shift;
  $tx->res->headers->header('X-Bender' => 'Bite my shiny metal ass!');
});

resume

$tx->on(resume => sub {
  my $tx = shift;
  ...
});

当事务重新启动时触发。

unexpected

$tx->on(unexpected => sub {
  my ($tx, $res) = @_;
  ...
});

当有 1xx 状态的响应返回,且被忽略的情况触发此事件。

$tx->on(unexpected => sub {
  my $tx = shift;
  $tx->res->on(finish => sub { say 'Follow-up response is finished.' });
});

属性

Mojo::Transaction::HTTP 继承了Mojo::Tranaction中的所有属性,并实现了previous属性。

my $previous = $tx->previous;
$tx          = $tx->previous(Mojo::Transaction::HTTP->new);

返回或设置触发当前事务的那个事务,通常是一个Mojo::Transaction::HTTP对象。

方法

Mojo::Transaction::HTTP继承了Mojo::Transaction中的所有方法,并实现了以下方法。

client_read

$tx->client_read($bytes);

作为客户端读取数据,用于实现诸如Mojo::UserAgent之类的用户代理。

client_write

my $bytes = $tx->client_write;

作为客户端写数据,用于实现诸如Mojo::UserAgent之类的用户代理。

is_empty

my $bool = $tx->is_empty;

对事务进行检查,如果是满足条件(HEAD 请求,返回的状态是1xx、204、304)则返回true,否则返回false。

keep_alive

my $bool = $tx->keep_alive;

检查连接是否可以 kept alive。

redirects

my $redirects = $tx->redirects;

返回一个数组的引用,里面包含了所有重定向到当前事务之前的事务。

# Paths of all previous requests
say $_->req->url->path for @{$tx->redirects};

resume

$tx = $tx->resume;

恢复事务。

server_read

$tx->server_read($bytes);

作为服务器读取数据,用于实现Web服务器,如Mojo::Server::Daemon。

server_write

my $bytes = $tx->server_write;

作为服务器写数据,用于实现Web服务器,如Mojo::Server::Daemon。

相关文章

  • Mojo::Transaction::HTTP

    简介 Mojo :: Transaction :: HTTP是基于RFC 7230和RFC 7231的 HTTP事...

  • Mojo::Transaction

    简介 Mojo::Transaction 是一个用于事务的抽象基类,它的子类有:Mojo::Transaction...

  • Mojo::Asset::File

    简介 Mojo::Asset::File 是HTTP内容的文件存储。 事件 Mojo::Asset::File继承...

  • Mojo::Asset::Memory

    简介 Mojo::Asset::Memory - 用于HTTP内容的内存存储 事件 Mojo::Asset::Me...

  • Mojo::Headers

    简介 Mojo :: Headers是基于RFC 7230和RFC 7231的 HTTP头的容器。 属性 Mojo...

  • Mojo::Asset

    简介 Mojo :: Asset是HTTP内容存储抽象基类,其子类有Mojo :: Asset :: File和M...

  • 十五、Maven: Maven插件之versions-maven

    versions-maven-plugin http://mojo.codehaus.org/versions-m...

  • Mojo::Message::Response

    简介 Mojo :: Message :: Response是基于RFC 7230和RFC 7231的 HTTP响...

  • Mojo::Message

    简介 Mojo :: Message是基于RFC 7230,RFC 7231和RFC 2388的 HTTP消息容器...

  • Mojo::Home

    Mojo::Home为 Mojo程序提供“家目录”服务,它是一个Mojo程序“家目录”的容器。Mojo::Home...

网友评论

    本文标题:Mojo::Transaction::HTTP

    本文链接:https://www.haomeiwen.com/subject/ytniextx.html