亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

ThinkPHP 獲取請求信息

1. 前言

前面小節介紹了 ThinkPHP 的路由規則,包括 POSTPUT、GETDELETE 請求方式,本小節主要介紹這幾種請求方式中一些常見的信息獲取,獲取這些參數將有助于加深框架的理解,并且能很好的理解框架工作原理,也能通過這些有用的信息來分析業務中的 BUG。

2. 調用請求對象

首先,為了演示方便,我們定義一個路由規則,定義代碼如下:

<?php
use think\facade\Route;

Route::get('info','Test/getInfo');

Tips: 其中 info 表示路由名,這是一個 GET 請求方式,Test 表示控制器名,getInfo 表示 Test 控制器下的方法名。

可以直接在控制器方法的參數中注入 Request 類對象,參考代碼如下:

<?php
namespace app\controller;

use app\BaseController;
use think\Request;

class Test extends BaseController
{
    public function getInfo(Request $request){
        halt($request);
    }
}

Tips: 其中 Request 表示請求對象,這是通過依賴注入進來的,halt() 方法是打印內容并結束,$request 表示 Request 對象。

執行結果如下圖所示:
圖片描述

Tips: 如圖所示表示打印的 Request 對象的信息,其中包含了全部的請求信息。

3. 獲取當前訪問域名或 IP

可以使用 Request 對象中的 host() 方法獲取當前訪問的域名或 IP,代碼如下:

    public function getInfo(Request $request){
        halt($request->host());
    }

執行結果如下圖所示:
圖片描述

Tips: 如圖所示 host() 方法獲取到的是當前訪問的域名,不包含子 url。

4. 獲取當前訪問端口

可以使用 Request 對象中的 port() 方法獲取當前訪問的端口號,代碼如下:

    public function getInfo(Request $request){
        halt($request->port());
    }

執行結果如下圖所示:
圖片描述

Tips: 所謂的端口,就好像是門牌號一樣,客戶端可以通過ip地址找到對應的服務器端,但是服務器端是有很多端口的,每個應用程序對應一個端口號,通過類似門牌號的端口號,客戶端才能真正的訪問到該服務器。為了對端口進行區分,將每個端口進行了編號,這就是端口號 。

5. 獲取 HTTP 頭信息

可以使用 Request 對象中的 header() 方法獲取當前 HTTP 請求的頭信息,代碼如下:

    public function getInfo(Request $request){
        halt($request->header());
    }

執行結果如下圖所示:
圖片描述

6. Request 請求對象方法說明

下面列舉了一些 Request 請求對象中方法的說明:

方法名 功能與作用描述
host 當前訪問域名或者IP
scheme 當前訪問協議
port 當前訪問的端口
remotePort 當前請求的REMOTE_PORT
protocol 當前請求的SERVER_PROTOCOL
contentType 當前請求的CONTENT_TYPE
domain 當前包含協議的域名
subDomain 當前訪問的子域名
panDomain 當前訪問的泛域名
rootDomain 當前訪問的根域名
url 當前完整URL
baseUrl 當前URL(不含QUERY_STRING)
query 當前請求的QUERY_STRING參數
baseFile 當前執行的文件
root URL訪問根地址
rootUrl URL訪問根目錄
pathinfo 當前請求URL的pathinfo信息(含URL后綴)
ext 當前URL的訪問后綴
time 獲取當前請求的時間
type 當前請求的資源類型
method 當前請求類型
rule 當前請求的路由對象實例

7. 小結

本節課介紹了如何使用 Request 對象獲取請求信息,首先介紹了如何調用 Request 請求對象,然后介紹了如何獲取當前請求域名、當前訪問端口、當前請求的 HTTP 頭信息,最后列舉了 Request 請求對象中方法的作用說明,若要調用其他方法可以參考本節課介紹的幾種方式。

Tips: 代碼倉庫:https://gitee.com/love-for-poetry/tp6