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