2015-02-09 71 views
1

我正在爲某些計算創建我自己的基於自定義的操作,該操作必須由json中的restful api發送。問題是,當我創建從activecontroller繼承的控制器,然後索引操作它要求模型類。yii2創建基於定製的Rest API

我必須使用索引動作與我自己的基於自定義的計算,這不需要存儲在數據庫中,所以我實際上不需要創建模型類。這是我第一次使用activecontroller,所以我不知道如何使索引頁面根據我的需要行事。

我可以用我想要的任何名稱創建我自己的基於自定義的操作,

public function actionFast() 
    { 
     echo "XXX"; 
    } 

和內部的配置/ web.php

'urlManager' => [ 
      'showScriptName' => false, 
      'enablePrettyUrl' => true 
      , 
      'rules' => [ 
       ['class' => 'yii\rest\UrlRule', 'controller' => ['Apprest/Fast'], 'extraPatterns' => ['GET dast' => 'fast']], 
      ], 
     ], 

而是我自定義的「快速」行動我需要使用索引操作各種計算。有沒有辦法做到這一點?

其次,我想使這個URL限制爲只有GET的URL,有沒有辦法讓用戶發送404錯誤,因爲他試圖發佈在這個頁面上?

回答

0

如果沒有模型,你可以直接從警予\其他\控制器延伸並添加所需

在這裏你可以看到例如操作:

namespace api\controllers; 
use yii\rest\Controller; 
class MyController extends Controller 
{ 
public function actionFast() 
    { 
     echo "XXX"; 
    } 
} 
+0

所以這意味着我應該創建所有的錯誤列表,包括404等,也必須手動創建頭信息,因爲我想發送的文檔應該是json格式?請詳細說明您的答案 – wolvorinePk 2015-02-10 16:47:59

+1

所有與yii \ rest \ Controller中實現的rest API相關的東西請查看源代碼,您將看到。所以如果你使用這個控制器,你只需要添加你的操作。 如果你想看看activecontroller的源代碼,那麼你會看到這個控制器從yii \ rest \ Controller擴展。 它所做的只是爲索引,更新等主動記錄添加動作... 所以如果你想創建沒有活動記錄的休息API,你只需要從其餘控制器擴展並添加你的動作 – 2015-02-10 18:59:11

+0

在這裏你可以看到例如: ' namespace api \ controllers; 使用yii \ rest \ Controller; class MyController extends Controller { public function actionFast() { echo「XXX」; } – 2015-02-10 19:01:25