yii2配置词典 / 请求配置(request)你知多少? -- 上篇

这又是一个我们在配置yii2时最常用的组件 – request,它代表客户端(浏览器、app端等)对服务器的一次请求。

接下来我们来研究下这个组件琳琅满目的配置参数。

记住在web.php里对request的配置都可以通过 Yii::$app->request->xxx 获得。


cookieValidationKey

这是个必填项,在你安装完yii2后首先要设置的就是这里,当然如果你用composer进行安装则会自动生成。针对于cookieValidationKey到底是什么?这里我并不打算多讲,近期会在cookie专题补充一篇“ cookieValidationKey原理分析”的文章。

你只需要记住这个是必填的,它作用于cookie,如果你的站运营时修改了则会导致所有和cookie相关的行为失效,比如登录状态等。

设置方法很简单,如下代码

'request' => [
    'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
],


baseUrl

获取网站根目录相对地址,在程序中可以通过 Yii::$app->request->baseUrl 获得。

提示:该变量得到的地址最后没有斜杠,请使用的时候注意。

当然我们可以在web.php中人工设置它。

'request' => [
    'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
    'baseUrl' => 'http://baidu.com'
],


hostInfo

获取当前域名,一般不需要更改,更多是直接使用它 Yii::$app->request->hostInfo

如果你要更改,可以如下方法

// in web.php
'request' => [
    'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
    'hostInfo' => 'http://baidu.com'
],
// in code
Yii::$app->request->hostInfo; // http://baidu.com


port

获得网站的端口,一般不需要更改,可以使用 Yii::$app->request->port 获得。

如果你要更改请用如下方法

// in web.php
'request' => [
    'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
    'port' => 9090
],
// in code
Yii::$app->request->port; // 9090


bodyParams

获取请求中的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']


queryParams

获取请求中的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

返回当前的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


rawBody

这个配置也很有用,当我们想获得客户端请求上来的json数据时,则可以通过这个方法,restful的时候很有用。

Yii::$app->request->rawBody

一般不需要更改,如果更改则如下代码

// in web.php
'request' => [
    'cookieValidationKey' => 'RKkmVLP4HL1VOXFWPKz2eyi8DPxsIYvT',
    'rawBody' => json
],


小结

以上为大家介绍了一些常用的配置,下一篇将为大家介绍一些更加冷门但是蛮有用的配置。

提示:因为request拥有很多一次请求的信息,我们对这个组件更多的是使用而非配置。

阿北的知识分享

点赞