Mojo::Transaction::HTTP

簡介

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事務(wù)的容器。

事件

Mojo::Transaction::HTTP繼承了Mojo::Transaction中的所有事件,并實(shí)現(xiàn)了以下事件。

request

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

當(dāng)一個(gè)請(qǐng)求準(zhǔn)備好需要發(fā)起時(shí)觸發(fā)此事件。

$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;
  ...
});

當(dāng)事務(wù)重新啟動(dòng)時(shí)觸發(fā)。

unexpected

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

當(dāng)有 1xx 狀態(tài)的響應(yīng)返回,且被忽略的情況觸發(fā)此事件。

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

屬性

Mojo::Transaction::HTTP 繼承了Mojo::Tranaction中的所有屬性,并實(shí)現(xiàn)了previous屬性。

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

返回或設(shè)置觸發(fā)當(dāng)前事務(wù)的那個(gè)事務(wù),通常是一個(gè)Mojo::Transaction::HTTP對(duì)象。

方法

Mojo::Transaction::HTTP繼承了Mojo::Transaction中的所有方法,并實(shí)現(xiàn)了以下方法。

client_read

$tx->client_read($bytes);

作為客戶端讀取數(shù)據(jù),用于實(shí)現(xiàn)諸如Mojo::UserAgent之類的用戶代理。

client_write

my $bytes = $tx->client_write;

作為客戶端寫數(shù)據(jù),用于實(shí)現(xiàn)諸如Mojo::UserAgent之類的用戶代理。

is_empty

my $bool = $tx->is_empty;

對(duì)事務(wù)進(jìn)行檢查,如果是滿足條件(HEAD 請(qǐng)求,返回的狀態(tài)是1xx、204、304)則返回true,否則返回false。

keep_alive

my $bool = $tx->keep_alive;

檢查連接是否可以 kept alive。

redirects

my $redirects = $tx->redirects;

返回一個(gè)數(shù)組的引用,里面包含了所有重定向到當(dāng)前事務(wù)之前的事務(wù)。

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

resume

$tx = $tx->resume;

恢復(fù)事務(wù)。

server_read

$tx->server_read($bytes);

作為服務(wù)器讀取數(shù)據(jù),用于實(shí)現(xiàn)Web服務(wù)器,如Mojo::Server::Daemon。

server_write

my $bytes = $tx->server_write;

作為服務(wù)器寫數(shù)據(jù),用于實(shí)現(xiàn)Web服務(wù)器,如Mojo::Server::Daemon。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡介 Mojo::UserAgent 是一個(gè)全功能的非阻塞 I/O HTTP 和 WebSocket 的用戶代理,...
    JSON_NULL閱讀 1,253評(píng)論 0 0
  • 簡介 Mojo::Transaction 是一個(gè)用于事務(wù)的抽象基類,它的子類有:Mojo::Transaction...
    JSON_NULL閱讀 723評(píng)論 2 2
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,625評(píng)論 18 399
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評(píng)論 6 342

友情鏈接更多精彩內(nèi)容