我有一个现有的Yii2应用程序,并一直试图实现一个REST API作为附加模块(也许一个模块不是正确的方式去做这件事?)但我有配置路线结构有些麻烦。它不起作用,不符合预期的结果,基于following guide。Yii2 REST API作为模块路由配置
我已经建立了一个附加模块,看起来像这样:
module
api
controllers
UserController.php
Module.php
UserController.php
<?php
namespace app\modules\api\controllers;
use yii\rest\ActiveController;
class UserController extends ActiveController
{
public $modelClass = 'app\models\User';
}
Module.php
<?php
namespace app\modules\api;
/**
* onco module definition class
*/
class Module extends \yii\base\Module
{
public $defaultController = 'user';
/**
* @inheritdoc
*/
public $controllerNamespace = 'app\modules\api\controllers';
/**
* @inheritdoc
*/
public function init()
{
parent::init();
// custom initialization code goes here
}
}
在我的配置文件我有添加以下内容:
'request' => [
...
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
],
...
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false, // have tried as true also
'rules' => [
...
['class' => 'yii\rest\UrlRule', 'controller' => '\app\modules\api\controllers\user'],
],
],
...
'modules' => [
...
'api' => [ // module for RESTful API
'class' => 'app\modules\api\Module',
],
]
当我通过邮递员运行下面的网址,我得到如下:
- http://localhost/site1/web/api/users - > 404
- http://localhost/site1/web/api/users/index - > 404
- http://localhost/site1/web/api/user/index - >返回JSON repsonse
- http://localhost/site1/web/api/user/2 - > 404
我不能确定,为什么预测的路线在文档中所指出:
尝试它随着精力的上述最小量,你有 已经完成了创造的RESTful API中的任务访问用户数据 。您创建的API包括: GET/users:逐页列出所有用户;
HEAD/users:显示用户列表的概述信息;
POST/users:创建一个新用户;
GET/users/123:返回用户123的详细信息;
HEAD/users/123:显示用户123的概述信息;
PATCH/users/123和PUT/users/123:更新用户123;
DELETE/users/123:删除用户123;
选项/用户:显示有关端点/用户的支持动词;
选项/用户/ 123:关于显示端点/用户支持的动词/ 123
我有什么可能在此设置什么错呢?有没有更好的方法在现有网站上实施API,同时保持DRY做法?
漂亮的网址已经启用为该网站,因为它是。我尝试了你的改变,但得到了相同的结果:-( – Jonnny
''controller'=> ['api/user']'你是否用''enableStrictParsing'=> true'来试试? –
我认为它可能有效。 '能够访问http:// localhost/site1/web/users和http:// localhost/site1/web/users/2以获取信息。只需确认其他请求 – Jonnny