您的位置:首页 > 其它

折腾一下框架请求的姿势

2017-01-15 10:32 190 查看
1.上节课我们已经学会了自定义的控制器

http://localhost/yiiserver/web/index.php?r=user/index/

就可以访问我们的
UserController
下面的方法
actionIndex


2.穿插一个路由知识点

毕竟
index.php?r=user/index
这种地址太难看了,

通过文档http://www.yiichina.com/doc/guide/2.0/rest-routing,我们做一些改造

config/web.php
打开下面代码的注释:

'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
],
],


然后我们就可以这样访问了:
http://localhost/yiiserver/web/index.php/user/index/


3.Yii框架表单安全机制

框架会要求你在提交时传入一个参数(这个参数由框架预先生成),你可以放到隐藏文本里,提交时带过去就可以了。

Yii里面这个提交参数叫做
_csrf
,

生成这个参数可以通过
echo   \Yii::$app->request->csrfToken;


不过很可惜,这个功能我们API开发用不到,所以直接关掉即可。

public function init()
{
$this->enableCsrfValidation = false;
}


4.请求格式

默认POST请求,Content-Type的值为
application/x-www-form-urlencoded
,请求体是以
id=3&name=jack
这样的形式发送的。

后端这样接收:

echo \Yii::$app->request->post('id');
echo \Yii::$app->request->post('name');


如果Content-Type是
application/json
呢?

发送json格式的数据:

{"id":3,"name":"jack"}


后端这样接收:

$body = file_get_contents("php://input");
echo json_decode($body)->name; //'jack'


这个是PHP原生的方式,但在Yii里我们可以简单配置一下就可以转换了
config/web.php


'request' => [
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
'cookieValidationKey' => 'xxxooooo',
'parsers' => [
'application/json' => 'yii\web\JsonParser',
'text/json' => 'yii\web\JsonParser' //这种类型,可以也用json解析器
],
],


然后后端就可以这样接收数据了:

function actionIndex()
{
//        $body = file_get_contents("php://input");
//        echo json_decode($body)->name; //'jack'
echo \Yii::$app->request->post('name');
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: