2011-11-05 100 views
0

我正在嘗試開發一個RESTful Yii Web服務。在項目的頂層,我有使用數據庫模式+ GiiX創建的模型。我有我想要的web服務生活在一個Web服務(WS)模塊對於現在的模式很簡單:在Yii中處理URL路由/控制器的最佳方式

  • Product(屬於Brand,有一個Analysis
  • Brand(有許多Product
  • Analysis(屬於一個Product

我想聰明創建urlManager規則,使我不必記當我創建新的操作和/或新的控制器時添加新的規則。我不確定的是如何做到這一點。請記住,現在我只是試圖讓用戶能夠按照標準列出一些過濾器。

首先,我應該爲每個模型我可能要工作在一個單獨的控制器 - 像ws/ProductControllerws/BrandControllerws/AnalysisController - 或者我應該有一個ws/WebServiceController對應於每個潛在的返回類型的操作?

有了答案,心中的第一個問題,我應該用什麼URL規則來完成以下任務:

  • 執行ws/*控制器(S)沒有PARAMS上的動作;
  • 用一些參數對ws/*控制器執行操作;

另外,現在,我只是使用GET。

我看過Yii的http://www.yiiframework.com/wiki/175/how-to-create-a-rest-api/關於創建RESTful API的頁面,但對如何將自己的示例應用到自己的頁面有點困惑。

回答

0

你可以做任何一種方式。既可以創建單獨的控制器,也可以將多個動作放在一個控制器中。我個人認爲創建一個Ws模塊並在其中放置多個控制器會很好。每一個模型:

modules 
    ws 
    controllers 
     ProductController 
     BrandController 
     … 

這樣,您將自動獲得足夠好的網址:ws/productws/brandws/brand/searchws/product/order

0

首先,我應該爲每個模型我可以在單獨的控制器想要 工作 - 像ws/ProductController,ws/BrandController, ws/AnalysisController - 或者我應該只有一個 ws/WebServiceController與對應於每個潛在 返回類型的操作?

我也認爲這取決於您的應用程序。就我個人而言,我會爲每個模型創建一個自己的控制器,並且如果需要的話,可能會引入基類,行爲或過濾器。

對沒有參數的ws/*控制器執行操作;用一些參數在ws/*控制器上執行 的操作;

假設你的模塊被註冊爲「web服務」,你可以使用這些規則:爲$ _ GET PARAMS

'ws/<_c>' => 'webService/<_c>', 
'ws/<_c>/<model:\w+>/<id:\d+>' => 'webService/<_c>', 

使用不依賴於你的規則,你可以做的URL與他們更好。

相關問題