我有一個現有的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