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日更新)
Mojoliciousドキュメント日本語訳