2015-05-18 88 views
3

我有一個問題,在Yii2中調用我的rest api的url。我想打電話給一個網址,如:Yii2其餘URL路由

http://localhost/index-dev.php/myapi/collection/18

,其中18是編號。

在我web.php配置,我有以下的代碼,與其他設置從另一個程序員:

'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => true, 
     'rules' => [ 
      ['class' => 'yii\rest\UrlRule', 'controller' => ['coding/nodes', 'coding/scales','myapi/collection']],     
      '<controller:\w+>/<id:\d+>' => '<controller>/view', 
     ],    
    ], 

當我打電話給我的網址,我得到

未找到(#404)

我在做什麼錯?

回答

4

您需要使用您的模型類名的複數的URL來訪問一個單一的模式:

http://localhost/index-dev.php/myapi/collections/18

看看在documentation of yii\rest\UrlRule

將上面的代碼創建一整套支持以下RESTful API端點的URL規則:

  • 'PUT ,PATCH用戶/ < ID> '=> '用戶/更新':更新用戶
  • '刪除用戶/ < ID>'=> '用戶/刪除':刪除一個用戶
  • ' GET,HEAD用戶/ < ID>」 => '用戶/視圖':返回​​一個用戶的細節/概覽/選項
  • 'POST用戶'=> '用戶/創建':創建新的用戶
  • 'GET,HEAD用戶的=> '用戶/索引':返回用戶的列表/概要/選項
  • '用戶/ < ID>'=> '用戶/選項':處理一個用戶的所有未處理的動詞
  • '用戶'=> '用戶/選項:處理用戶集合中的所有未處理的動詞
+0

對不起,這個分析錯誤是從這裏複製並粘貼代碼,而不是在代碼中。 但它無法正常工作。 – Wael

+0

好的,但是那麼錯誤需要在其他地方,因爲你的代碼工作正常。在您的虛擬主機或.htaccess中是否啓用URL重寫? – vim

+0

是的,它已啓用,因爲我從yii2中獲取錯誤,而不是來自瀏覽器。 秒我可以調用「http://localhost/index-dev.php/myapi/collection」這將調用indexAction – Wael

4

我有同樣的問題,您可以禁用prural

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => true, 
    'rules' => [ 
     ['class' => 'yii\rest\UrlRule', 'controller' => ['coding/nodes', 'coding/scales','myapi/collection']],     
     '<controller:\w+>/<id:\d+>' => '<controller>/view', 
     'pluralize' => false, 
    ],    
], 
+0

感謝您的解決方案,但我不希望改變這麼多舊代碼,因爲我正在開發新功能,並應讓舊代碼正常工作。但是你的解決方案也很好理解;) – Wael

2

我建議API 創建單獨的模塊和配置UrlManager像... :)

'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'enableStrictParsing' => true, 
      'showScriptName' => false, 
      'rules' => [ 
       [ 
        'class' => 'yii\rest\UrlRule', 
        'pluralize'=>false, 
        'controller' => ['v1/country','v1/user'], 
        'tokens' => [ 
         '{id}' => '<id:\\w+>' 
        ], 
        'extraPatterns' => [ 
         'POST register' => 'register', //from url 
         'GET exists'=>'exists', 
         'POST login'=>'login', 
         'POST follow'=>'follow', 
         'POST category'=>'category', 
         'PUT profile'=>'profile', 
         'PUT change_password'=>'change_password', 
         'PUT feed_interested'=>'feed_interested', 
        ], 


       ] 
      ],   
     ] 

更多細節@Create Rest Api