2011-11-05 104 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与他们更好。

相关问题