yii restful和一般路由共存

<?php

namespace app\controllers;

use Yii;
use yii\rest\ActiveController;

/**
 * 
 */
class TestController extends ActiveController
{

    public $modelClass = 'app\models\Test';

    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['contentNegotiator']['formats'] = ['application/json' => yii\web\Response::FORMAT_JSON];
        return $behaviors;
    }
    
    public function actionHi($id)
    {
        return ['s', 2];
    }

}

上述代码中行为定义了默认返回json。

 

'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                [
                    'class' => 'yii\rest\UrlRule', 
                    'pluralize' => false,  //关闭复数显示,如user访问变成了users
                    'controller' => 'test'
                ],
            ],
        ],

在没有开启上面的配置前,/test/1,可以通过index.php?r=test/view&id=1 访问,也就是一般的路由规则访问。

没有开启enablePrettyUrl = true ,则通过/test/view?id=1访问。

如果全部按照上面示例的配置,且配置controller,则可以直接/test/1访问,因为这个yii\rest\UrlRule内部已经把路由做了处理。

如:

[

'PUT,PATCH users/<id>' => 'user/update',

'DELETE users/<id>' => 'user/delete',

'GET,HEAD users/<id>' => 'user/view',

'POST users' => 'user/create',

'GET,HEAD users' => 'user/index',

'users/<id>' => 'user/options',

'users' =>'user/options',

]

 

在没有开启restful相关的配置前,按照一般的路由规则访问。

 

posted @ 2017-07-13 11:56  luckc#  阅读(645)  评论(0编辑  收藏  举报