ThinkPHP 獲取請求信息
1. 前言
前面小節介紹了 ThinkPHP 的路由規則,包括 POST
、PUT
、GET
、DELETE
請求方式,本小節主要介紹這幾種請求方式中一些常見的信息獲取,獲取這些參數將有助于加深框架的理解,并且能很好的理解框架工作原理,也能通過這些有用的信息來分析業務中的 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