yii restful和一般路由共存

时间:2021-09-23 06:20:30
<?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相关的配置前,按照一般的路由规则访问。