折腾一下框架请求的姿势

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');
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值