Mojo::Transaction::HTTP - HTTPトランザクション
使い方
use Mojo::Transaction::HTTP; # クライアント 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; # サーバー 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->on(finish => sub { say 'Follow-up response is finished.' }); });
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 'Followup response is finished.' }); });
属性
Mojo::Transaction::HTTPはMojo::Transactionから すべての属性を継承しており、次の新しい属性を 実装しています。
previous
my $previous = $tx->previous; $tx = $tx->previous(Mojo::Transaction::HTTP->new);
この後に続いて起こったトランザクションの引きがねとなった 以前のトランザクション。通常はMojo::Transaction::HTTP オブジェクト。
# 前のリクエストのパス say $tx->previous->previous->req->url->path; say $tx->previous->req->url->path;
メソッド
Mojo::Transaction::HTTPはMojo::Transactionからすべての メソッドを継承しており、次の新しいメソッドを実装しています。
client_read
$tx = $tx->client_read($bytes);
クライアントのデータを読み込み、処理します。 エージェントの実装に利用されます。
client_write
my $bytes = $tx->client_write;
クライアントのデータを書き込みます。 エージェントの実装に利用されます。
is_empty
my $bool = $tx->is_empty;
ヘッダリクエストあるいは、1xx
, 204
,304
レスポンスかどうかをチェックします。
keep_alive
my $bool = $tx->keep_alive;
接続がキープアライブかどうかをチェックします。
redirects
my $redirects = $tx->redirects;
この後に続いて起こったトランザクションの引きがねとなった、すべての前のトランザクションのリストを返却します。
# すべての以前のリクエストのパス say $_->req->url->path for @{$tx->redirects};
resume
$tx = $tx->resume;
トランザクションを再開する。
server_read
$tx = $tx->server_read($chunk);
サーバーのデータを読み込み、処理する。 Webサーバーの実装に利用されます。
server_write
my $chunk = $tx->server_write;
サーバーのデータを書き込む。 Webサーバーの実装に利用されます。
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年5月29日更新)