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相关的配置前,按照一般的路由规则访问。