首頁 > 後端開發 > php教程 > CodeIgniter 4 的請求和回應 codeigniter thinkphp codeigniter 3.0 codeigniter cms

CodeIgniter 4 的請求和回應 codeigniter thinkphp codeigniter 3.0 codeigniter cms

WBOY
發布: 2016-07-29 08:54:41
原創
1049 人瀏覽過

data-id="1190000004868315">

CodeIgniter 4 對輸入和輸出的處理方式做了一個較大的改變。在上一個版本中,包括最新的 V3 版,輸入和輸出分別是用兩個包含相關函數的類別來處理的。這樣的處理方式背後雖然沒有高深的技術,但卻能簡單直接的實作功能。在 V4 版中,我們將更模組化 HTTP 層,並建立全新的類別結構來同時處理 HTTP 的請求和回應。

概覽

在開發 Web 應用時(不同於 CLI 程式),你只需關心兩個類別:IncomingRequestResponse

IncomingRequest 類別

IncomingRequest 類別包含了HTTP 請求和該請求附帶的數據,包括:

  • GET、POST、SERVER 和ENV 等環境變數

  • 當前請求的URL 對象

  • 上傳的文件

  • 並且還包括常見的請求信息比如:

  • 客戶端的IP 地址

是否為Ajax 請求

  • 是否為CLI 請求

  • 是否為HTTPS

  • 如果你對IncomingRequest 這個類別名稱感到奇怪,或者說IncomingRequest 是不是可以簡單的稱為Request?答案是否定的,因為已經有另一個包含 GET 和 POST 等變數的更為通用的 Request 類,但這個類別不包括詳細的 HTTP 請求資訊。一個請求通常只做兩件事:一個是瀏覽器用戶端發送請求到伺服器(連入),或是當前伺服器發送請求到外部伺服器(連出)。

    Response 類別
  • Response 類別用來把程式的執行結果傳回給客戶端。你可以設定 HTTP 回應頭,或直接傳送內容到客戶端,等等。 Response 類別提供了一些便利方法例如:

設定適當的 no-cache 頭資訊

處理 HTTP 快取頭資訊

  • 的頁面範例

    處理 HTTP 快取頭資訊

  • 的頁面範例

    上面說的這些看起來好像很有科技含量,但其實很簡單。這些類別的實例已作為屬性放到每個控制器中,如果你覺得很麻煩,則無需直接使用這些屬性。 Response 類別會擷取控制器的輸出,並自動設定為回應的主體。一個簡單的 Hello World 看起來像這樣:

    <code>class Home extends \CodeIgniter\Controller
    {
        public function index()
        {
            echo "Hello World!";
        }
    }</code>
    登入後複製

    易如反掌。

    在需要的時候,框架為你提供了精確控制回應的能力。你可以建立複雜的 HTTP 快取策略,並與 IncomingRequest 類別一起透過內容協商自訂回應內容。

    下面是一個稍微複雜一點的例子,你會發現程式碼很容易看明白,而且處理的很簡單。

    <code>class Home extends \CodeIgniter\Controller
    {
        public function __construct(...$params)
        {
            parent::__construct(...$params);
    
            // This controller is only accessible via HTTPS
            if (! $this->request->isSecure())
            {
                // Redirect the user to this page via HTTPS, and set the Strict-Transport-Security
                // header so the browser will automatically convert all links to this page to HTTPS
                // for the next year.
                force_https();
            }
        }
    
        public function index()
        {
            $data = [
                ...
            ];
    
            // Set some HTTP cache rules for this page.
            $this->response->setCache([
                'max-age' => 300,
                's-max-age' => 900,
                'etag' => 'foo'
            ]);
    
            // Return JSON
            $this->response->setContentType('application/json')
                           ->setOutput(json_encode($data));
        }
    }</code>
    登入後複製

    在這個例子中,我們主要做了三件事。首先,透過將目前URL 重新導向到HTTPS URL,並設定一個Strict-Transport-Security 回應頭(這種方式已被很多主流瀏覽器所支持,在發送請求前透過瀏覽器自動將HTTP 請求轉換成HTTPS 請求),來強制這個頁面以HTTPS 的方式存取;然後,我們透過設定一些HTTP 快取規則來幫助瀏覽器正確處理緩存,這意味著能減少HTTP 請求量,減輕伺服器負擔,提高效能;最後,我們輸出JSON資料給用戶,並確保內容類型是正確的。

    希望這篇文章能有助於大家粗略的了解 CodeIgniter 的未來,讓大家意識到改變並不可怕。 :) 未來將敲定框架更多的細節,直到形成一個相對穩定的架構,並且會撰寫更多的文章來講述這些內容。

    以上就介紹了CodeIgniter 4 的請求和回應,包括了codeigniter方面的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板