这又是一个我们在配置yii2时最常用的组件 – request,它代表客户端(浏览器、app端等)对服务器的一次请求。
接下来我们来研究下这个组件琳琅满目的配置参数。
记住在web.php里对request的配置都可以通过 Yii::$app->request->xxx 获得。
这是个必填项,在你安装完yii2后首先要设置的就是这里,当然如果你用composer进行安装则会自动生成。针对于cookieValidationKey到底是什么?这里我并不打算多讲,近期会在cookie专题补充一篇“ cookieValidationKey原理分析”的文章。
你只需要记住这个是必填的,它作用于cookie,如果你的站运营时修改了则会导致所有和cookie相关的行为失效,比如登录状态等。
设置方法很简单,如下代码
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
],
获取网站根目录相对地址,在程序中可以通过 Yii::$app->request->baseUrl 获得。
提示:该变量得到的地址最后没有斜杠,请使用的时候注意。
当然我们可以在web.php中人工设置它。
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
'baseUrl' => 'http://baidu.com'
],
获取当前域名,一般不需要更改,更多是直接使用它 Yii::$app->request->hostInfo
如果你要更改,可以如下方法
// in web.php
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
'hostInfo' => 'http://baidu.com'
],
// in code
Yii::$app->request->hostInfo; // http://baidu.com
获得网站的端口,一般不需要更改,可以使用 Yii::$app->request->port 获得。
如果你要更改请用如下方法
// in web.php
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
'port' => 9090
],
// in code
Yii::$app->request->port; // 9090
获取请求中的post数据,该变量为一个数组,在rest接口中最为常用,我们可以通过 Yii::$app->request->bodyParams 方式获得。
一般情况都不需要更改,如果更改如下
// in web.php
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
'bodyParams' => ['name'=>'nai8.me']
],
// in code
Yii::$app->request->bodyParams; // ['name'=>'nai8.me']
获取请求中的get数据,该变量为一个数组,在rest接口中最为常用,我们可以通过 Yii::$app->request->queryParams 方式获得。
一般情况都不需要更改,如果更改如下
// in web.php
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
'queryParams' => ['name'=>'nai8.me']
],
// in code
Yii::$app->request->queryParams; // ['name'=>'nai8.me']
提醒:该返回中也会包含路由参数(r=xxx/xxx)
返回当前的url地址,不过不包括域名部分,这个一般也不需要更改,直接通过 Yii::$app->request->url 获取,结果类似于/index.php?r=site/index&name=abei
默认获得的url前面有斜杠,这点请记住。
如果要更改请如下操作
// in web.php
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
'url' => 'index.php'
],
// in code
Yii::$app->request->url; // index.php
这个配置也很有用,当我们想获得客户端请求上来的json数据时,则可以通过这个方法,restful的时候很有用。
Yii::$app->request->rawBody
一般不需要更改,如果更改则如下代码
// in web.php
'request' => [
'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
'rawBody' => json
],
以上为大家介绍了一些常用的配置,下一篇将为大家介绍一些更加冷门但是蛮有用的配置。
提示:因为request拥有很多一次请求的信息,我们对这个组件更多的是使用而非配置。
阿北的知识分享