fuelphp 請(qǐng)求和響應(yīng)
http 請(qǐng)求和 http 響應(yīng)在任何 web 應(yīng)用程序中都扮演著重要的角色。我們需要獲取 http 請(qǐng)求的完整詳細(xì)信息才能正確處理它。處理完后,我們需要通過(guò)http響應(yīng)將處理后的數(shù)據(jù)發(fā)送給客戶端。
fuelphp 提供了優(yōu)秀的 request 和 response 類(lèi)來(lái)分別讀寫(xiě)http 請(qǐng)求和http 響應(yīng)。讓我們學(xué)習(xí)本章中的 request 和 response 類(lèi)。
請(qǐng)求
在典型的 web 應(yīng)用程序中,應(yīng)用程序需要解析當(dāng)前請(qǐng)求的詳細(xì)信息。 request 類(lèi)提供了簡(jiǎn)單的方法來(lái)解析應(yīng)用程序要處理的當(dāng)前請(qǐng)求。 request 還提供了一個(gè)選項(xiàng),通過(guò)充當(dāng) http 客戶端來(lái)創(chuàng)建新請(qǐng)求。
創(chuàng)建新請(qǐng)求使應(yīng)用程序能夠請(qǐng)求應(yīng)用程序的其他部分 or 完全是另一個(gè)應(yīng)用程序并顯示結(jié)果。讓我們?cè)诒菊轮袑W(xué)習(xí)如何解析傳入的請(qǐng)求,并在 hmvc 請(qǐng)求章節(jié)中學(xué)習(xí)如何創(chuàng)建新請(qǐng)求。
解析請(qǐng)求
request 類(lèi)提供了三種方法來(lái)獲取 http 請(qǐng)求的詳細(xì)信息。它們?nèi)缦拢?/p>
active-它是一個(gè)靜態(tài)方法,返回當(dāng)前活動(dòng)的 http 請(qǐng)求。
$currentrequest = request::active();
param-它返回指定參數(shù)的值。它包含兩個(gè)參數(shù)。第一個(gè)參數(shù)是參數(shù)名稱,第二個(gè)參數(shù)是要返回的值,如果該參數(shù)在當(dāng)前 http 請(qǐng)求中不可用。
$param = request::active()->param('employee_name', 'none');
params-除了將所有參數(shù)作為數(shù)組返回之外,它與 param 相同。
$params = request::active()->params();
示例
讓我們創(chuàng)建一個(gè)簡(jiǎn)單的表單并使用請(qǐng)求類(lèi)處理表單。
步驟 1-在員工控制器中創(chuàng)建一個(gè)新操作 action_request。
public function action_request() { }
步驟 2-調(diào)用請(qǐng)求方法以獲取當(dāng)前請(qǐng)求的所有參數(shù)。
public function action_request() { $params = request::active()->params(); }
步驟 3-轉(zhuǎn)儲(chǔ)獲取的參數(shù)數(shù)組。
public function action_request() { $params = request::active()->params(); echo dump($params); }
step 4-更改路由以在路由配置文件中包含參數(shù), fuel/app/config/routes.php
'employee/request(/:name)?' => array('employee/request', 'name' => 'name'),
現(xiàn)在,請(qǐng)求新操作 http://localhost:8080/employee/request/jon,它將顯示以下響應(yīng)。

回復(fù)
response 類(lèi)提供了創(chuàng)建 http 響應(yīng)的選項(xiàng)。默認(rèn)情況下,我們?cè)诖蠖鄶?shù)情況下不需要直接使用響應(yīng)類(lèi)。相反,我們使用 view(我們將在下一章學(xué)習(xí))來(lái)創(chuàng)建 http 響應(yīng)。 view 對(duì)開(kāi)發(fā)人員隱藏 http 響應(yīng),并使用底層 response 類(lèi)將響應(yīng)發(fā)送給客戶端。在高級(jí)的情況下,我們直接使用response類(lèi),創(chuàng)建一個(gè)完整的http響應(yīng)。
創(chuàng)建響應(yīng)
響應(yīng)由標(biāo)題和正文組成。主要標(biāo)頭是 http 狀態(tài)代碼。 http 狀態(tài)碼是 http 協(xié)議中定義的用于描述響應(yīng)的標(biāo)準(zhǔn)代碼。例如狀態(tài)碼,200表示請(qǐng)求成功。
response 類(lèi)提供了三個(gè)參數(shù)來(lái)創(chuàng)建 http 響應(yīng),
$body = "hi, fuelphp"; $headers = array ( 'content-type' => 'text/html', ); $response = new response($body, 200, $headers);
讓我們?cè)趩T工控制器中創(chuàng)建一個(gè)新動(dòng)作, action_response,如下所示。
public function action_response() { $body = "hi, fuelphp"; $headers = array ( 'content-type' => 'text/html', ); $response = new response($body, 200, $headers); return $response; }
結(jié)果

方法
response 類(lèi)提供了很多操作 http 響應(yīng)的方法。它們?nèi)缦拢?/p>
forge-它與上面看到的響應(yīng)類(lèi)構(gòu)造函數(shù)相同。
return response::forge("hi, fuelphp", 404);
redirect-它提供了重定向到 url 而不是發(fā)送響應(yīng)的選項(xiàng)。它包含以下參數(shù),
a.url-目標(biāo)網(wǎng)址 b.方法-重定向方法。 location(默認(rèn))和 refresh c.redirect_code-http 狀態(tài)代碼。默認(rèn)值為 302、
// use a url response::redirect('http://some-domain/index', 'refresh'); // or use a relative uri response::redirect('employee/list');
redirect_back-除了重定向到上一頁(yè)之外,它類(lèi)似于重定向方法。如果沒(méi)有可用的后臺(tái)頁(yè)面,我們可以指定重定向頁(yè)面。
// if there is no back page, go to the employee list page response::redirect_back('/employee/list', 'refresh');
set_status-它提供了一個(gè)設(shè)置 http 狀態(tài)代碼的選項(xiàng)。
$response = new response(); $response->set_status(404);
set_header-它提供了一個(gè)設(shè)置 http 標(biāo)頭的選項(xiàng)。
$response = new response(); $response->set_header('content-type', 'application/pdf'); // replace previous value using third arguments $response->set_header('content-type', 'application/pdf', 'text/plain');
set_headers-與 set_header 相同,只是它提供了使用數(shù)組設(shè)置多個(gè)標(biāo)題的選項(xiàng)。
$response = new response(); $response->set_headers(array 'content-type' => 'application/pdf', 'pragma' => 'no-cache', ));
get_header-它可以獲取先前設(shè)置的標(biāo)題詳細(xì)信息。
$response = new response(); $response->set_header('pragma', 'no-cache'); // returns 'no-cache' $header = $response->get_header('pragma'); // returns array('pragma' => 'no-cache') $header = $response->get_header();
body-它提供了一個(gè)選項(xiàng)來(lái)設(shè)置 http 響應(yīng)的正文。
$response = new response(); $response->body('hi, fuelphp'); // returns 'hi, fuelphp' $body = $response->body();
send_headers-將標(biāo)頭發(fā)送到請(qǐng)求的客戶端。 fuelphp 使用此方法將響應(yīng)發(fā)送到客戶端。通常情況下,我們不需要使用這種方法。
$response->send_headers();
send-與 send_headers 相同,但 http 響應(yīng)中可能會(huì)限制標(biāo)頭。
// send the headers as well $response->send(true); // only send the body $response->send(false); $response->send();
- CodeIgniter 安裝
- CodeIgniter 配置
- CodeIgniter 錯(cuò)誤處理
- CodeIgniter 臨時(shí)數(shù)據(jù)
- CodeIgniter 常用函數(shù)
- CodeIgniter 頁(yè)面重定向
- CodeIgniter 基準(zhǔn)測(cè)試
- CodeIgniter 國(guó)際化
- CakePHP 教程
- CakePHP 擴(kuò)展視圖
- CakePHP 日期和時(shí)間
- CakePHP 文件上傳
- FuelPHP 分析器
- FuelPHP 錯(cuò)誤
- Laravel 路由
- Laravel 請(qǐng)求
- Laravel 重定向
- Laravel 驗(yàn)證
- Laravel 發(fā)送電子郵件
- Laravel 錯(cuò)誤處理