## 獲取請求類型
在很多情況下面,我們需要判斷當前操作的請求類型是`GET`、`POST`、`PUT`、`DELETE`或者`HEAD`,一方面可以針對請求類型作出不同的邏輯處理,另外一方面有些情況下面需要驗證安全性,過濾不安全的請求。
請求對象`Request`類提供了下列方法來獲取或判斷當前請求類型:
| 用途 | 方法 |
| --- | --- |
| 獲取當前請求類型 | method |
| 判斷是否GET請求 | isGet |
| 判斷是否POST請求 | isPost |
| 判斷是否PUT請求 | isPut |
| 判斷是否DELETE請求 | isDelete |
| 判斷是否AJAX請求 | isAjax |
| 判斷是否PJAX請求 | isPjax |
| 判斷是否手機訪問 | isMobile |
| 判斷是否HEAD請求 | isHead |
| 判斷是否PATCH請求 | isPatch |
| 判斷是否OPTIONS請求 | isOptions |
| 判斷是否為CLI執行 | isCli |
| 判斷是否為CGI模式 | isCgi |
> `method`方法返回的請求類型始終是大寫,這些方法都不需要傳入任何參數。
> 沒有必要在控制器中判斷請求類型再來執行不同的邏輯,完全可以在路由中進行設置。
## 請求類型偽裝
支持請求類型偽裝,可以在`POST`表單里面提交`_method`變量,傳入需要偽裝的請求類型,例如:
~~~
<form method="post" action="">
<input type="text" name="name" value="Hello">
<input type="hidden" name="_method" value="PUT" >
<input type="submit" value="提交">
</form>
~~~
提交后的請求類型會被系統識別為`PUT`請求。
> 你可以設置為任何合法的請求類型,包括`GET`、`POST`、`PUT`和`DELETE`等,但偽裝變量`_method`只能通過POST請求進行提交。
如果要獲取原始的請求類型,可以使用
~~~
Request::method(true);
~~~
> 在命令行下面執行的話,請求類型返回的始終是`GET`。
如果你需要改變偽裝請求的變量名,可以修改應用配置文件:
~~~
// 表單請求類型偽裝變量
'var_method' => '_m',
~~~
## `AJAX/PJAX`偽裝
可以對請求進行`AJAX`請求偽裝,如下:
~~~
http://localhost/index?_ajax=1
~~~
或者`PJAX`請求偽裝
~~~
http://localhost/index?_pjax=1
~~~
如果你需要改變偽裝請求的變量名,可以修改應用配置文件:
~~~
// 表單ajax偽裝變量
'var_ajax' => '_a',
// 表單pjax偽裝變量
'var_pjax' => '_p',
~~~
復制
> `_ajax`和`_pjax`可以通過`GET/POST/PUT`等請求變量偽裝。